php无效后杀死过程

  • 本文关键字:过程 无效 php php
  • 更新时间 :
  • 英文 :


我有一个脚本,因为它会在一段时间后可能会在一段时间后不活动,因为它从非常慢的服务器中请求信息,而短时间的时间很短。

脚本echo s在每个过程后完成后,作为我调试代码的方式。是否有任何方法可以从另一个脚本执行脚本并在上次echo之后杀死它。换句话说,在不活动之后杀死脚本。
编辑:在这里我们可以示出我的代码的示例:

foreach ($info["Ten_Friends"] as $friend) {
    $info = [];
    echo "11111 n";
    $info = $i->userAnalysis($friend);
    if ($info != false) {
        echo "if to databasen";
        if (($i->usersDatabase($info) == true)) {
            mediaDataBase($info);
            $nAnalized += 1;
            echo "nAnalized: ".$nAnalized."n";
        }
    } else {echo $friend." not analised";}
    echo "3333n";
}

如您所见,每个过程之后i echo$i->userAnalysis($friend);$i->usersDatabase($info)都向服务器请求数据,此功能在一段时间后可能会变得无反应,因此,如果它们这样做,我需要杀死脚本。
在OSX El Capitan和MySQL上运行PHP 5.6

尝试以下:

$cmd = "php AnalyzeFriends.php";
$timeout_tolerance = 10; // 10 seconds
$last_response = time(); // start time
ob_implicit_flush(true);
ob_end_flush();
$descriptorspec = array(
   0 => array("pipe", "r"),   // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),   // stdout is a pipe that the child will write to
   2 => array("pipe", "w")    // stderr is a pipe that the child will write to
);
flush();
$process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array());
echo "<pre>";
if (is_resource($process)) {
    while ($s = fgets($pipes[1])) {
        print $s;
        if((time() - $last_response) > $timeout_tolerance){
          fclose($pipes[0]);
          fclose($pipes[1]);
          fclose($pipes[2]);
          proc_close($process);
        }
        $last_response = time();
        flush();
    }
}
echo "</pre>";

将其作为一个单独的脚本运行,可以调用您已发布的脚本,请查找Echos,如果它没有收到

的回声

最新更新