如何在启动后停止ignore_user_abort?

时间:2012-02-03 20:28:00

标签: php

什么是停止在循环中主动在服务器上运行的ignore_user_abort的最佳解决方案? (PHP)

基本上试图阻止一个无限循环的PHP脚本,因为设置了ignore_user_abort并且脚本已经执行而不会停止..

简单夸张的例子:

<? 

ignore_user_abort(true);

set_time_limit(0);

$test = 1;

while ($test < 1000000000000000 )

{

sleep(1);
$test = $test+1;
}

?>

2 个答案:

答案 0 :(得分:2)

似乎connection_aborted正是您要找的?

<?php
ignore_user_abort(TRUE);
set_time_limit(0);

while (TRUE) {
  if(connection_aborted()) {
      break;
  }
  sleep(5);
}

// do some stuff now that we know the connection is gone
?>

或者,您可以针对预定义的CONNECTION_ABORTED常量检查connection_status

if(connection_status() == CONNECTION_ABORTED)
{
    break;
}

您可以在manual docs on Connection handling

中获得良好的纲要

答案 1 :(得分:1)

//this will stop the script after running for  30 sec
set_time_limit(30);