ホームページ  >  記事  >  バックエンド開発  >  PHP_PHPチュートリアルでスケジュールされたタスクを実装する方法の詳細な説明

PHP_PHPチュートリアルでスケジュールされたタスクを実装する方法の詳細な説明

WBOY
WBOYオリジナル
2016-07-21 15:08:56663ブラウズ

udomeで分析してみたのですが、これがudomeの仕組みです
1. スケジュールされたタスクをすべてデータベースに保存します
2. ユーザーが操作を実行するか、ページを開くたびに、スケジュールされたタスクが順番に実行されます。時間切れと判断した後、ユーザープロセスで実行されます
予定のタスクコードは./source/function_cron.phpにあります
上記は予定したタスクについてのおおよその結果を解析しただけです。誰かがそれを取得する良い方法を持っていることを願っています。
ignore_user_abort()
私は以前、スケジュールされたタスクについて徹底的に研究し、スケジュールされたタスクについてはたくさんのアイデアがあると思います。 Web に最も適しているのは、DZ や PHPWind に似たトリガー タイプです。ほとんどの Web アプリケーションでは、このように行われます。また、安定したトリガーを提供するために、他にもいくつか紹介します。 crontab+wget または ab を使用して、スケジュールされたアクセスを提供します
2. Nohup + php を使用して、無限ループを作成します
3. トリガーを提供するには、キャッシュまたはデータベースを使用する必要があります。ループし、トリガー頻度を制御するには sleep または usleep を使用する必要があります
4、crontab+php
5、Web トリガー方法には違いもあります。1 つは時間指定トリガーで、もう 1 つは固定期間トリガーです。DZ と PHPWind は、どちらもスケジュールされたトリガーです。最終的に使用したのは固定期間トリガーです。具体的な実装アイデアは簡単に考えられるので、詳細は説明しません。ホストがある場合は、コマンド ライン PHP を実行する必要があります。コード内に記述することは可能です
ループを使用する場合は、ループを特定の処理プログラムから分離するのが最善です。そうしないと、メモリが増加し続けます。
今日、PHP マニュアルでこの関数 -ignore_user_abort を発見しました。この関数は、Linux での cron のようなスケジュールされたタスクの実装に役立ちます。実装方法を見てみましょう。
まず、PHPマニュアルでこの関数の説明を見てください
説明

intignore_user_abort ([ bool $setting ] )

クライアントの切断によりスクリプトが中止されるかどうかを設定します。

つまり、クライアントがブラウザを閉じるかどうかに関係なく、次のプログラムが実行されます。

そのパラメータを見てみましょう

Parameters

設定

設定されていない場合、関数は現在の設定のみを返します。

この関数は、ignore_user_abort 関数を有効にするかどうかを決定するパラメーターを受け取ります。

戻り値を見てください:


戻り値

前の設定をブール値として返します。


ここでは、前の設定が返され、値が bool であると書かれていますが、このステートメントは明らかに int 型です。信じられない場合は、php ファイルを作成してテストできます。それ。

ここまで述べましたが、PHP のこの機能を使用してスケジュールされたタスクを実装するにはどうすればよいでしょうか?別の関数を使用すると、この関数は set_time_limit0) を使用して、プログラムの実行時間を無制限に設定できます。 set_time_limit(0) を使用すると、プログラムを実行できます。無制限に。プログラムを実行する前に、ignore_user_abort (1) と set_time_limit (0) を追加するだけです。例を挙げてみましょう。


コードをコピーします

コードは次のとおりです:

ignore_user_abort(); // スクリプトをバックグラウンドで実行しますset_time_limit(0); // スクリプトを永久に実行します
$interval=30; // 15 分ごとに実行します…
do{
$fp = fopen('text3.txt','a');
fwrite($fp,'test');
fclose($fp);
sleep($interval ); // 15 分待ちます
}while(true);
?>






http://www.bkjia.com/PHPjc/327419.htmlwww.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/327419.html技術記事 udome で分析したところ、udome が行うことは 1. スケジュールされたすべてのタスクをデータベースに保存する 2. ユーザーが操作を実行するか、ページを開くたびに、スケジュールされたタスクが順番に実行されます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。