Archives by Tag 'PHP'

Flex/PHP Sockets 通信issue及解决办法

By Symphony - Last updated: Saturday, October 22, 2011

1. crossdomain.xml内容 <cross-domain-policy> <site-control permitted-cross-domain-policies="all" /> <allow-access-from domain="*" to-ports="*" /> </cross-domain-policy> 2. 建立连接时,flex会发送 <policy-file-request/> PHP收到后返回 crossdomain.xml的内容,记得返回crossdomain.xml的内容字符串后要补上”\0″。Sym在这个点上卡了很久。。。汗。。。 3. 发数据应该在 Event.CONNECT 事件触发后的回调函数中调用,直接放在connect后有可能导致发送的数据没收到。

PHP实测 isset 比 array_key_exists 快数倍以上

By Symphony - Last updated: Tuesday, June 28, 2011

测试结果: array_key_exists: 0.0042860507965088 isset: 0.00093889236450195 测试脚本如下: <?php $arr = range(0, 20000); $loopNum = 10000; $start = microtime(true); for($i = 0; $i < $loopNum; ++$i) { array_key_exists(10000, $arr); } $end = microtime(true); echo ‘array_key_exists: ‘, $end – $start, "\n"; $start = microtime(true); for($i = 0; $i < $loopNum; ++$i) { isset($arr[10000]); } $end = microtime(true); echo [...]

Gentoo+Nginx+PHP(php-fpm)+MySQL+xcache

By Symphony - Last updated: Sunday, April 3, 2011

要使nginx和php协同工作,nginx需要加入fastcgi这个use,要使用fpm,php需要加入fpm这个use。 echo "www-servers/nginx fastcgi" >> /etc/package.use echo "dev-lang/php fpm mysqli mysql pcntl pdo postgres soap sockets sqlite3 truetype zip" >> /etc/package.use 安装 time emerge -av nginx php 安装过程大概需要持续半个小时。。。 完成后编辑 /etc/nginx/nginx.conf,加入高亮部分。 server { listen 127.0.0.1; server_name localhost; access_log /var/log/nginx/localhost.access_log main; error_log /var/log/nginx/localhost.error_log info; root /var/www/localhost/htdocs; location ~ .php$ { fastcgi_pass 127.0.0.1:9000; include fastcgi.conf; } } 重启nginx和php-fpm即可。 [...]

pcntl_wait 原来是这么用的啊。。。

By Symphony - Last updated: Tuesday, February 15, 2011

看到PHP手册有这么一段代码: <?php $pid = pcntl_fork(); if ($pid == -1) { die(‘could not fork’); } else if ($pid) { // we are the parent pcntl_wait($status); //Protect against Zombie children } else { // we are the child } pcntl_fork 是创建子进程这个是知道的,但pcntl_wait是什么意思呢?手册说了一堆,英文的,看不懂,google之,发现pcntl_wait原来是指: int pcntl_wait ( int &$status [, int $options ] ) 阻塞当前进程,只到当前进程的一个子进程退出或者收到一个结束当前进程的信号。 int pcntl_waitpid ( int $pid , int &$status [, int $options ] ) 功能同pcntl_wait,区别为waitpid为等待指定pid的子进程。当pid为-1时pcntl_waitpid与pcntl_wait一样。

PHP & svn 经验总结(长期更新)

By Symphony - Last updated: Friday, May 14, 2010

safe_mode必须设为off,on状态导致许多内置文件系统函数不能正常工作,php官方不赞成启用本函数。 php扩展的编译。在linux下给php加扩展不需要重新编译php,可以编译成so文件,由php加载该目录即可。 windows安装apache+php时,要需要在extension_dir指定扩展文件的目录,高版本得php(当前是PHP 5.3.2),默认得扩展目录时c:\php5,旧版本只要在系统path设定一下就可以了。 zend optimizer 3.3.3版不支持php5.3,兄弟们不用试了。。。 svn 中文件名不要用大小写来区分,在linux下可能没问题,但在win下会报系统找不到指定的文件这个错误。 PDT打开代码自动提示。打开 Eclipse的 Window -> Preferences -> PHP -> Editor ->Code Assist->Auto Activation打开里面的Enable auto activation选项。

php求数组并集的函数

By Symphony - Last updated: Tuesday, April 20, 2010

/**  * 求多个数组的并集  */ function array_union() {     $argsCount = func_num_args();       if ($argsCount < 2)     {         return false;     }     else if (2 == $argsCount)     {      list($arr1, $arr2) = func_get_args();        while (list($k, $v) = each($arr2)) [...]

file_get_contents和\n的那些事

By Symphony - Last updated: Tuesday, December 22, 2009

用file_get_contents去获取一段url的内容,结果总是显示404,实际上页面是存在的。搞了半天不明白,后来发现报错的url后带一个空白,猜想可能是url后面多了\n的话file_get_contents就会报错,就在url上加了个trim,马上就成功了!!-_-这file_get_contents的容错性真是……

PHP 版的 Curl 使用代理服务器示例

By Symphony - Last updated: Wednesday, November 11, 2009

Curl 可以模拟浏览器访问url地址,但是有些网站我们无法直接访问,所以需要使用代理。上PHP 手册查一下对使用 sockets5 只是笼统的介绍了一下,这里贴出 PHP 版的 Curl 使用 sockets5 代理的示例代码,以便日后查阅。 < ?php $remote_url = 'http://www.google.com'; $ch = curl_init($remote_url);       curl_setopt($ch, CURLOPT_HEADER, 0);   //以下代码设置代理服务器 //是否启用代理 curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true); //代理认证模式 curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC); //代理服务器地址 curl_setopt($ch, CURLOPT_PROXY, "127.0.0.1"); //代理服务器端口 curl_setopt($ch, CURLOPT_PROXYPORT, 8866); //代理模式,这里用socket5的方式 curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $res = curl_exec($ch); [...]