Heim  >  Artikel  >  Backend-Entwicklung  >  php定时执行问题,sleep后获取参数问题

php定时执行问题,sleep后获取参数问题

WBOY
WBOYOriginal
2016-06-06 20:12:541048Durchsuche

项目中需要用到定时执行,但是定时的时间是一个变量参数,不是固定的

开始考虑使用crontab来实现,但是时间参数没办法自定义,还需要获得一个传递的ID来执行sleep后的程序

使用php中的sleep函数碰到一个问题,在sleep之前GET或者POST过来的参数,在sleep之后获取不到。

<code>ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.  
set_time_limit(0); // 执行时间为无限制,php默认执行时间是30秒,可以让程序无限制的执行下去      
$interval=$_GET['interval']; // 接收$_GET参数
$id = $_GET['id']; //这里是请求触发的时候传递过来的ID,在sleep后需要用到
flush();         
sleep($interval); // 按设置的时间等待执行 */ 
/*** sleep后需要用到上面的$id,来执行其他程序,测试后发现$id获取不到。为空**/</code>

有知道的大神吗?或者提供一下其他的思路,谢谢了!

回复内容:

项目中需要用到定时执行,但是定时的时间是一个变量参数,不是固定的

开始考虑使用crontab来实现,但是时间参数没办法自定义,还需要获得一个传递的ID来执行sleep后的程序

使用php中的sleep函数碰到一个问题,在sleep之前GET或者POST过来的参数,在sleep之后获取不到。

<code>ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.  
set_time_limit(0); // 执行时间为无限制,php默认执行时间是30秒,可以让程序无限制的执行下去      
$interval=$_GET['interval']; // 接收$_GET参数
$id = $_GET['id']; //这里是请求触发的时候传递过来的ID,在sleep后需要用到
flush();         
sleep($interval); // 按设置的时间等待执行 */ 
/*** sleep后需要用到上面的$id,来执行其他程序,测试后发现$id获取不到。为空**/</code>

有知道的大神吗?或者提供一下其他的思路,谢谢了!

把flush注释掉

测试可以执行

<code class="php">ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.  
set_time_limit(0); // 执行时间为无限制,php默认执行时间是30秒,可以让程序无限制的执行下去      

// params
$interval=$_GET['interval']; // 接收$_GET参数
$id = $_GET['id']; //这里是请求触发的时候传递过来的ID,在sleep后需要用到

flush();         
sleep($interval);

echo $id;</code>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn