ホームページ  >  記事  >  バックエンド開発  >  ignore_user_abort(1) と set_time_limit(0) は無限ループを設定します。それを終了するにはどうすればよいですか?

ignore_user_abort(1) と set_time_limit(0) は無限ループを設定します。それを終了するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-23 14:20:291282ブラウズ

この投稿は、zhoumengkang によって最後に編集されました: 2013-08-09 17:24:21


今日、マニュアルの ingore_user_abort() でそのような例を見ましたが、実際に無期限に実行できます。しかし、プロセスが終了した場合はどうなるでしょうか?あはは、マニュアルの例には記載されていません。 サーバーを再起動せずに。そのプロセスを見つけて終了するにはどうすればよいでしょうか?
ignore_user_abort(0); // run script in background set_time_limit(0); // run script forever $interval=2; // do every 15 minutes... do{ 	$data = '1<br/>';	file_put_contents('./test.html',$data,FILE_APPEND);    sleep($interval); // wait 15 minutes }while(true); 

ディスカッションへの返信 (解決策)

cli モードの場合

<?php$pid = getmypid();ignore_user_abort(0);set_time_limit(0);  $interval=200; do{     echo "$pid"; //获取pid    sleep($interval);}while(true);


kill pid

間違っています、それは

 ignore_user_abort(1); 

cli モードの場合

<?php$pid = getmypid();ignore_user_abort(0);set_time_limit(0);  $interval=200; do{     echo "$pid"; //获取pid    sleep($interval);}while(true);


kill pid 私はあなたのようになることができます将来的には、上記の getmypid を書かなかったらどうなるかを書きます。 。 。 Linuxにアクセスするしかないのでしょうか?


cli モードで

<?php$pid = getmypid();ignore_user_abort(0);set_time_limit(0);  $interval=200; do{     echo "$pid"; //获取pid    sleep($interval);}while(true);


kill pid 上記の私のように getmypid を書かなくても、将来的にはあなたと同じように書くことができます。 。 。 Linux にアクセスするしかないのでしょうか?

pid のないプロセスを見つけるのは難しいですよね。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。