PHP多进程协作编程之 socket
基本思路:通过SOCKET请求其他PHP脚步,实现PHP的多进程的异步执行。
废话就不多说了,请看下面的脚步并执行之。
<?php
//a.php
function runThread(){
$fp = fsockopen('127.0.0.1', 82, $errno, $errmsg);
fputs($fp, "GET /a.php?act=b\r\n"); //这里的第二个参数是HTTP协议中规定的请求头
//不明白的请看RFC中的定义
fclose($fp);
}
function a(){
$fp = fopen('result_a.log', 'w');
fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "\r\n");
fclose($fp);
}
function b(){
$fp = fopen('result_b.log', 'w');
fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "\r\n");
fclose($fp);
}
if(!isset($_GET['act'])) $_GET['act'] = 'a';
if($_GET['act'] == 'a')
{
runThread();
a();
echo 'ok';
}
else if($_GET['act'] == 'b') {
b();
}
?>
通过观察result_a.log与result_b.log:
result_a.log: Set in 03:45:560.293005
result_b.log: Set in 03:45:560.296877
我们发现,先写了result_a.log文件后写了result_b.log,这说明两个进程是异步执行的。
相关文档:
$_GET 变量用于收集来自 method="get" 的表单中的值。
$_GET 变量
$_GET 变量是一个数组,内容是由 HTTP GET 方法发送的变量名称和值。
$_GET 变量用于收集来自 method="get" 的表单中的值。从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送的信息量也有限制(最多 100 个 ......
昨天调用同事的一个json接口,发现调用php中的函数json_decode无法转化为数组。
<?php
$json = "{'d':[['xxx','中国','广西','xjr7670@sina.com','2010-05-01 13:35:02'],['xxx','中国','广西','xjr7670@sina.com','2010-05-01 13:35:02']],'c':13659,'n':759}";
print_r( ......
copy F:\php\php5ts.dll F:\Apache2.2\bin\
copy F:\php\libmysql.dll F:\Apache2.2\bin\
copy F:\php\php.ini-recommended F:\php\php.ini
httpd:
LoadModule php5_module "F:\php\php5apache2_2.dll"
PHPIniDir "F:\php\php.ini"
AddType application/x-httpd-php .php
php.ini:
short_open_tag = Off 改成 sho ......
在PHP中使用过SESSION的朋友可能会碰到这么一个问题,在某些客户端电脑上SESSION变量不能跨页传递。这令我苦恼了好些日子,最终通过查资料思考并解决了这个问题。我认为,出现这个问题的原因有以下几点:
1、客户端禁用了cookie
2、浏览器出现问题,暂时无法存取cookie
3、php.ini中的session.use_trans_sid = 0或者编译 ......
PHP5.2.4之前的版本无需设置时区。下面是修改PHP时区的三个办法。
1、修改PHP.ini这个文件
找到date.timezone这行,去掉前面的分号,改成: date.timezone = Asia/Shanghai 2、修改 .htaccess文件
修改.htaccess文件有两种办法,下面的两条语句只要有一条即可 php_value date.timezone Asia/Shanghai
......