PHP多线程,无限期执行页面

说到PHP无限执行页面,首先肯定想到set_time_limit(0);,的确,这个可以让页面无限期执行。但是,这个也有不适用的时候。比如,在nginx中限制单个PHP页面执行的时间,或者在做数据统计的时候,你总不至于让页面一直在转吧。下面分享一个我想到的解决方案,当然,不一定是最优的。

首先,将涉及到大量运算的代码单独写到页面中,称之为_exe.php。

然后,写一个中间页面来执行这个页面,称之为_do.php,代码如下:

<?php// 获取参数
$name = $_GET['name'];
// 调用cli模式,执行文件
exec("php _do.php $name");

最后,在需要执行_exe.php页面的地方加如下代码:

$opts = array(
    'http'	=>	array(
        'method' => "GET",
        'timeout' => 2,  //设置请求时间,2秒后放弃请求
         'user_agent'=>"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
    )
);
$context = stream_context_create($opts);
file_get_contents(’_do.php?name=abc‘, false, $context);

总结,就是使用一个中间页面,调用php的cli模式,进行执行文件。因为php的cli模式,可以无限期执行文件。这也相当于变相实现了多线程!


你可能感兴趣的:(PHP多线程,无限期执行页面)