欢迎各位兄弟 发布技术文章
这里的技术是共享的
下面参数进行详解,看代码吧:
Web服务器执行一个PHP脚本,有时耗时很长才能返回执行结果,后面的脚本需要等待很长一段时间才能继续执行。如果想实现只简单触发耗时脚本的执行而不等待执行结果就直接执行下一步操作,可以通过fscokopen函数来实现或者Geanman实现,php异步处理。
PHP支持socket编程,fscokopen函数返回一个到远程主机连接的句柄,可以像使用fopen返回的句柄一样,对它进行 fwrite、fgets、fread等操作。使用fsockopen连接到本地服务器,触发脚本执行,然后立即返回,不等待脚本执行完成,即可实现异步 执行PHP的效果。
test.php 代码如下:
$domain = “localhost”; // 或者您的域名
$url = ‘/test4.php’; // 异步请求的页面
$header = “POST $url HTTP/1.0\r\n”;
$header .= “Content-Type:application/x-www-form-urlencoded\r\n”;
$par = “email=zhangzenglun@163.com”;
$header .=”Content-Length:”.strlen($par).”\r\n\r\n”;
$fp = @fsockopen($domain,80,$errno,$errstr,30);
fputs($fp, $header.$par);
fclose($fp);
echo ‘send ok!’;
test4.php 代码如下
set_time_limit ( 0 );
ignore_user_abort ( true );//浏览器关闭之后还执行
$i = 0;
while ( $i ++ < 50 ) {
file_put_contents ( $i . ‘.php’, $_REQUEST['email'].$i);
sleep ( 3 );
}
执行: 访问 test.php 很快就返回 send ok! 说明 异步成功。
来自 http://luhuang.sinaapp.com/php-fsockopen/
例子
test.php
代码如下 | 复制代码 |
<?php
$par = "email=zhangzenglun@163.com"; $header .="Content-Length:".strlen($par)."\r\n\r\n"; echo 'send ok!'; ?> |
test4.php
代码如下 | 复制代码 |
<?php set_time_limit ( 0 ); |