PHP
文章平均质量分 63
Linvo
刚要成熟,又要老去。时光,好不经用。
展开
-
Nginx、SSL双向认证、PHP、SOAP、Webservice、https
本文是1:1模式,N:1模式请参见新的一篇博客《SSL双向认证(高清版)》----------------------------------------------------- 我是分割线 ---------------------------------------------------------标题太长了不知道该怎么起,索性就把keyword列出来吧~WebService的原创 2013-06-22 17:47:44 · 8410 阅读 · 0 评论 -
尝试用Gearman实现分布式处理(PHP)
本文需要你已对Gearman有个大致了解,如果不知该东东是何物,请参考之前一篇转帖日志《Gearman - 分布式远程过程处理框架》顺便再推荐两篇参考文章http://hi.baidu.com/thinkinginlamp/blog/item/ff49972b9e7378f3e6cd40aa.html(学学Gearman)http://www.ibm.com/develo原创 2010-02-09 15:02:00 · 6033 阅读 · 0 评论 -
用 PHP V5 开发多任务应用程序
除了多进程,PHP原来也可以支持非阻塞模式运行,很好很强大:D这篇转自IBM developerworks,等随后尝试一下再搞篇原创:) ----------------------------------------------------- 转帖开始 ----------------------------------------------------- 许转载 2010-04-08 12:25:00 · 1935 阅读 · 0 评论 -
PHP中实现非阻塞模式
程序非阻塞模式,这里也可以理解成并发。而并发又暂且可以分为网络请求并发和本地并发。 先说一下网络请求并发理论描述假设有一个client,程序逻辑是要请求三个不同的server,处理各自的响应。传统模型当然是顺序执行,先发送第一个请求,等待收到响应数据后再发送第二个请求,以此类推。就像是单核CPU,一次只能处理一件事,其他事情被暂时阻塞。而并发模式可以让三个server同原创 2010-04-09 10:23:00 · 17706 阅读 · 0 评论 -
PHP CURL详解
声明:补充翻译了原帖中几处未翻译处。---------------------------------------------------- 转帖开始 ------------------------------------------------------- PHP中的CURL函数库(Client URL Library Function) curl_close -翻译 2010-05-21 11:20:00 · 2243 阅读 · 0 评论 -
腾讯php程序员面试题目
<br />腾讯的面试题依旧保持着他那BT的风格~_~<br />---------------------------------------------- 华丽的分割线 ----------------------------------------------------<br /> <br /><br />说在前面:<br />1、以下题目,除了编程任务外其他都需要写在给你提供的草纸上。纸张是珍贵的地球资源,请节约使用。编程任务在有相应的环境时,会要求上机书写,实在没有条件,就只能写在草纸上了。<b转载 2010-06-03 23:20:00 · 1465 阅读 · 0 评论 -
JS到PHP使用RSA算法进行加密通讯
我们平时做用户登录表单提交,用户名密码都是明文直接POST到后端,这样很容易被别人从监听到。注:包括使用MD5等哈希函数处理后的数据,这里也算做明文(现在MD5爆破网站已经很多了~)。对安全性要求较高的网站,比如银行和大型企业等都会使用HTTPS对其进行加密通讯。但是由于效率原因,使用HTTPS的代价是及其昂贵的,对于访问量稍大的网站就会造成严重的性能瓶颈。解决方法一般只能采用专门的SSL硬件加速设备如F5的BIGIP等。所以很多网站选择了模拟SSL的做法,使用RSA来对密码等安全信息进行公钥加密,服务端用原创 2010-06-12 16:34:00 · 17167 阅读 · 22 评论 -
PHP中解码Javascript中的unicode字符串
<br />php里来解js中的unicode编码(就是/u1234/u5678这种东西)没有内置函数真麻烦,找了半天终于找了个靠谱点的自定义函数,备份一下<br />function unicode_decode($name){ //转换编码,将Unicode编码转换成可以浏览的utf-8编码 $pattern = '/([/w<>//]+)|(///u([/w]{4}))/i'; preg_match_all($pattern, $name, $matches);转载 2010-10-21 14:50:00 · 1928 阅读 · 0 评论 -
CURL非阻塞调用类【PHP】
<br />之前写过一篇PHP实现非阻塞调用的文章PHP中实现非阻塞模式,其实如果只是HTTP的话,直接用CURL就能实现。<br />基于网上的一段代码,修改完善后封装了一个支持POST/GET的非阻塞调用类。<br />欢迎测试bug~~~~~<br />/***************************************************** CURL 非阻塞调用类 Auther: Linvo Copyright(C) 2010/10/21*************原创 2010-10-21 14:57:00 · 7613 阅读 · 0 评论 -
MySQL Master/Slave数据库读写操作类
数据库操作类:DBCommon.class.php //--------------------------------------------------------------------- // MySQL Master/Slave数据库读写操作类 // // 开发作者: heiyeluren // 版本历史: //转载 2009-11-18 09:40:00 · 1605 阅读 · 1 评论 -
PHP中判断数组是否为关联数组
网上的一段代码,经过精简后的版本 function _isAssocArray(array $var){ return array_diff_assoc(array_keys($var), range(0, sizeof($var))) ? TRUE : FALSE;}原创 2009-11-16 17:57:00 · 3240 阅读 · 2 评论 -
APE(Ajax Push Engine)
翻译:Linvo转帖请注明出处!官方网站:http://www.ape-project.org=============================== Getting Started with APE You will find on this page all the informations you need to get started with翻译 2009-07-31 09:35:00 · 2624 阅读 · 5 评论 -
高级PHP应用程序漏洞审核技术
来源:http://www.ph4nt0m.org-a.googlepages.com/PSTZine_0x03_0x06.txt ==Ph4nt0m Security Team== Issue 0x03, Phile #0x06 of 0x07 |=----------转载 2009-08-06 13:46:00 · 1082 阅读 · 0 评论 -
输出控制函数
一般说道模板或缓存的时候,都会提到ob_start这类函数,这里是几个常用函数的通俗说明。(摘自:http://www.54chen.com/c/505) ob_start()在服务器打开一个缓冲区来保存所有的输出。所以在任何时候使用echo ,输出都将被加入缓冲区中,直到程序运行结束或者使用ob_flush()来结束。然后在服务器中缓冲区的内容才会发送到浏览器,由浏览器来解析显示。函原创 2009-06-22 09:50:00 · 730 阅读 · 0 评论 -
关于CPU时间片轮询的一点发现
今天试验PHP CLI模式时发现一个有趣的现象:由于CLI模式没有最大执行时间的限制,我写了一个while(1)循环来使当前程序一直运行。但是当循环中没有复杂性操作时,CPU占用率始终保持95%以上;而当循环中进行了诸如输出语句等具有明显消耗性操作时,CPU降到了20%。我想这应该是linux内核对CPU的时间片轮询机制造成的,具体情况还没有去仔细想(该复习操作系统原理了-_-!)。后原创 2009-06-24 18:09:00 · 2493 阅读 · 0 评论 -
通过PHP CLI实现简单的数据库实时监控调度
继续CLI模式试验,这次通过使用之前的“带延时的死循环”方法,来实现个简单的数据库实时监控调度功能。要实现的功能:监控user表,若有新纪录增加,将其向user2表中添加。(实际应用上可以引深一些,例如对数据进行相关处理等) 下面是PHP代码(dbtest.php)!#/usr/local/php/bin/php<?phpmysql_connect(localhost,原创 2009-06-30 18:19:00 · 1462 阅读 · 1 评论 -
继续CLI实用性研究:)
之前研究到使用CLI做简单的监控调度程序,通常实际中需要用到许多调度程序,这样一来管理就成了问题,尤其对于命令行形式的程序来说。加上通常使程序在后台运行,这样管理起来非常不直观。为此,自己设计了一套控制系统结构(见下图),还有不成熟的地方有待进一步改进。之前0.1版设计中,我为每个进程的启动也封装了一个start程序,用来统一管理写入run.ing的操作。但是实现起来遇到一些实际中原创 2009-07-02 18:25:00 · 728 阅读 · 0 评论 -
重新设计的新构架——v0.3
之前的结构存在些问题,这一版重新设计了总体架构(见下图):这个架构基于Socket,较之前版本主要有以优点:1、支持对调度进程的实时监控2、支持调度进程的多服务器部署3、支持其他任务(外界任务请求)原创 2009-07-07 09:18:00 · 701 阅读 · 0 评论 -
正在编码中的 v0.4
前两天按0.3版的设计开始动手实现,具有基本功能的雏形出来以后,稍微测试了下发现一个严重的问题——监控中心进程的内存占用持续飙升,大概按每分钟1%的速度增长。开始以为是socket引起的,后来经过排查发现罪魁祸首是shmop。至今没搞明白的一点是,虽然每次读写的内存地址是一样的,即使内容都不变,内存依旧有增无减。google无果,最后重新分析调整了下结构,把之前0.2版中的run.ing文件重新引原创 2009-07-09 13:58:00 · 691 阅读 · 0 评论 -
编码转换:unicode(10进制)转utf8
<br /> <br />遇到问题:我需要把好大一坨类似“ 凡客 ”这样的东西转化成可读的utf8编码。<br /> <br />一步一步探索:<br />1、unicode打头的扩展函数在我的PHP5.2.x中还不可用<br />2、网上找了很多代码来试验,都以失败告终<br />3、重新google后得知,该类型编码为html页面中可以正常显示为汉字的unicode的10进制表示形式<br />4、再次翻手册,在utf8_encode函数的评论中看到了一个有用的回复,试验成功!(原创 2011-03-03 21:54:00 · 5491 阅读 · 0 评论 -
PHP CURL POST无法获取响应内容的问题
现象:使用PHP的CURL相关函数进行POST,当要POST的参数内容长度超过1024时,将无法获得response的数据。即:curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CUR原创 2011-09-08 12:52:48 · 10309 阅读 · 0 评论 -
Javascript到PHP加密通讯的简单实现
由于下周要向内部刊物交稿,因此才有了本文。其实内容主要来源于上一篇博文,只是重新组织了语言,并做了原理性的阐述,更容易理解:P----------------------------------------- 华丽的分割线 ----------------------------------------- 互联网上大多数网站,用户的数据都是以明文形式直接提交到后端CGI,服务器之间原创 2010-07-17 15:31:00 · 10470 阅读 · 7 评论 -
RSA算法类(PHP)
通过openssl实现的签名、验签、非对称加解密,需要配合x.509证书(如crt和pem)文件使用。由于各种原因,该类并不十分完善,欢迎各种测试!<?php/** * RSA算法类 * 签名及密文编码:base64字符串/十六进制字符串/二进制字符串流 * 填充方式: PKCS1Padding(加解密)/NOPadding(解密) * * Notice:Only原创 2013-01-25 17:55:23 · 15975 阅读 · 4 评论 -
详解使用PHP CURL访问HTTPS
三年前写过一篇《一个简陋的支持HTTPS的PHP CURL封装函数》,当时只是知其然不知其所以然,今天来详细梳理一下。为方便说明,先上代码吧~ 这是今天重新封装的一个函数/** * curl POST * * @param string url * @param array 数据 * @param int 请求超时时间 * @param bool HTTPS原创 2013-04-17 22:06:19 · 27984 阅读 · 0 评论 -
一个简陋的支持HTTPS的PHP CURL封装函数
2013-4-17更新请参看最新一篇《详解使用PHP CURL访问HTTPS》--------------------------------------------------------------------------------------------------------------------标题有点长,其实就是用来向https服务器post数据function c原创 2010-05-25 11:39:00 · 3418 阅读 · 1 评论 -
常用对称加密算法(DES/AES)类(PHP)
看注释,啥也不说了,欢迎各种跨平台测试!/** * 常用对称加密算法类 * 支持密钥:64/128/256 bit(字节长度8/16/32) * 支持算法:DES/AES(根据密钥长度自动匹配使用:DES:64bit AES:128/256bit) * 支持模式:CBC/ECB/OFB/CFB * 密文编码:base64字符串/十六进制字符串/二进制字符串流 * 填充方式: P原创 2013-01-12 21:59:06 · 16963 阅读 · 9 评论 -
信用卡校验位算法THE LUHN MOD-10
没什么要说的,只是做个备份~---------------------------------------- 我是分割线 ---------------------------------------------按照ISO 2894 中支付卡校验位的算法 The Luhn Mod-10 Method 规定:1、对卡号上的每位数字乘以权重。其规则是,如果卡号数字个数是偶数,则第一位乘原创 2013-06-04 17:02:58 · 4718 阅读 · 0 评论 -
你喜欢SOAP吗?反正我不喜欢!
叫什么Simple Object Access Protocol,实际上一点都不Simple!说什么轻量级协议,从它基于XML的编码就知道它有多臃肿!说什么跨平台特性,其实各个语言需要自己实现一整套SOAP!除了给人看的接口文档外,还需要一份给机器看的wsdl,并且接口调用前要先载入它!有人也许会说“wsdl是基于xml的,人也可以直接阅读啊,完全可以不需要接口文档!”。。原创 2013-06-17 15:45:38 · 4309 阅读 · 0 评论 -
SSL双向认证(高清版)
上一篇介绍了SSL双向认证的一些基本问题,以及使用Nginx+PHP基于它搭建https的Webservice。之前的方式只是实现1:1的模式,昨天同事继续实现了n:1的模式,这里我再整理记录下。由于nginx的ssl_client_certificate参数只能指定一个客户端公钥,如果增加一个客户端进行通信就要重新配一个server。n:1的模式是通过CA的级联证书模式实现的,首先自原创 2013-06-26 13:49:26 · 17784 阅读 · 3 评论 -
给PHP安装amqp扩展
有史以来最坑爹的一次扩展安装,不晓得诸位有没有尝试过…………各种报错啊!有木有?!¥#@%%&*……捣鼓半天,只编译了个0.1.x的扩展版本,瞅了下,擦,函数少的可怜啊- -||| 不行,继续~经过一天的努力,老天总算开眼了,赶紧总结下吧~----------------------------------------------- 我是分割线 ------------------原创 2012-07-23 22:18:08 · 10162 阅读 · 8 评论 -
基于Gearman的PHP封装类
在多个jobs server时,PHP的gearman扩展在jobs server端口不通的情况下会自动检测出来,从而自动切换到另一个;但是在IP不通的情况下,就会出错了。该封装解决了几个问题:1、Jobs Server的IP如果突然不可达(例如机器关机),worker会自动重新添加jobs server(默认会报错然后worker终止);2、添加jobs server时候只添加有效的原创 2012-08-23 17:57:20 · 1360 阅读 · 0 评论 -
通过PHP的hash冲突漏洞进行DDoS攻击
声明:本文内容只用于研究学习使用,请勿用于非法行为!上回咱说到了最近爆出的hash表碰撞漏洞,包括java、python、php等在内的很多常用语言均未幸免,今晚咱就来实际看看它的威力。攻击原理:通过向目标服务器post一组精心拼凑的数组参数,到达服务端后语言底层处理接收到的数组参数时,由于该漏洞的存在造成CPU的大量消耗,最终导致服务器资源耗尽。不用什么花哨的手法,就用P原创 2012-01-01 00:12:56 · 11442 阅读 · 4 评论 -
关于PHP与Java AES加解密互通的Padding问题
首先,通常情况下Java内部支持三种填充:NoPadding,PKCS5Padding(默认),ISO10126Padding。如果选用NoPadding的话,对于数据长度不满16字节整数倍的情况下,Java是会报错的。PHP貌似是使用NoPadding填充,但实际上对于上述情况PHP内部是会以“\0”来填充,其实是一种Zero填充。表现在Java中,则是由Bouncy Castl原创 2012-02-29 14:11:34 · 5393 阅读 · 2 评论 -
关于PHP数组的hash冲突的一点疑问
脱库门着实让2011年的年末过得好不热闹,以至于很少有人把剩余的目光和精力投向除密码外的安全方面,就如28号国外爆出的多语言的哈希表碰撞攻击漏洞。关于该漏洞,网上那段PHP的测试代码已经轻松证明了它的存在,惠新宸的博客里也简单说明了它的原理以及相关补丁。通过自己对测试代码进行了一些修改和运行后,可能由于对原理还不是十分了解,对于测试结果有点疑问还没有弄明白。。。我的代码如下:/原创 2011-12-31 23:30:05 · 1792 阅读 · 0 评论 -
第三方扩展超时导致的php-cgi进程死锁
不是“僵死”,也不是“睡眠”,类似“挂起”,但又kill不掉,只能-9杀掉……想来想去还是用“死锁”形容比较恰当些。查找了下原因,是由于使用了Gearman扩展,php作为Client调用Worker未手动设置超时时间,调用不可访问的地址后造成php-cgi进程无限期占用,导致进程耗尽(不是资源耗尽)。解决方法:当然是设定个超时时间了。GearmanClient::setTimeout原创 2012-04-10 17:47:50 · 1776 阅读 · 0 评论 -
Rolling cURL: PHP并发最佳实践
在实际项目或者自己编写小工具(比如新闻聚合,商品价格监控,比价)的过程中, 通常需要从第3方网站或者API接口获取数据, 在需要处理1个URL队列时, 为了提高性能, 可以采用cURL提供的curl_multi_*族函数实现简单的并发.本文将探讨两种具体的实现方法, 并对不同的方法做简单的性能对比.1. 经典cURL并发机制及其存在的问题经典的cURL实现机制在网上很容易找转载 2012-06-27 15:52:53 · 1178 阅读 · 0 评论 -
基于amqp的PHP封装类
只对比较简单的direct模式进行了封装,队列支持持久化、镜像以及auto-delete。(但是不支持交换机的auto-delete,不知道扩展中为什么没与支持)先执行消费者,创建对交换机、队列并与路由键绑定,并监听消息队列;再执行生产者,向已创建的交换机中发送消息。直接上代码了:/** * 消费者类 */class AsynMessageConsumer{ pr原创 2012-08-03 16:23:28 · 2950 阅读 · 2 评论 -
用PHP尝试RabbitMQ(amqp扩展)
两年前曾发过一篇《用Python尝试RabbitMQ》,没想到两年后的今天,基于PHP的amqp资料还是少得可怜,原来的几个扩展也都一个个被废弃,只剩amqp还健在,且被PECL收录。虽说被收录,可官方手册中的信息还是略显单薄。言归正传,amqp扩展的安装就不多说了,可参看前几天发的那篇《给PHP安装amqp扩展》装好了amqp后就可以开始编写代码了:消费者:接收消息逻辑:原创 2012-08-02 10:15:41 · 6070 阅读 · 0 评论 -
fastcgi模式会缓存DNS
这个是昨天在查找一个PHP调用远程HTTP接口耗时较长问题时发现的。背景介绍:调用服务器(下面简称C)和远程接口服务器(S)在同一机房,通过域名访问C绑hosts,设置S的内网IP,耗时几十msC绑hosts,设置S的公网IP,耗时几十msC不绑hosts,直接走DNS,耗时几百ms问题好像很明显了,应该是DNS问题。好的,那么看一下C上设置的哪个DNS。cat /原创 2012-08-31 11:53:06 · 2769 阅读 · 0 评论 -
使用socket实现文件传输[PHP CLI]
目前使用的socket传输原理Demo #!/usr/bin/php<?php define("SEPARATOR", "|=+=|");//used for explode filename and contents//client$filename = "data";$fp = fsockopen("127.0.0.1", 20000, $errno, $err原创 2009-07-27 17:50:00 · 2619 阅读 · 1 评论