うちょめのやり方はこうだとうちょめで分析してみました
1. スケジュールされたタスクをすべてデータベースに保存します
2. ユーザーが操作を行ったり、ページを開くたびに、スケジュールされたタスクが順に実行され、時間が経過すると、ユーザープロセスで実行されます。
うーちょめのスケジュールされたタスクのコードは ./source/function_cron.php にあります上記は、uchome コードでスケジュールされたタスクのおおよその結果の分析にすぎません。誰かが共有する良い方法を持っていることを願っています
ignore_user_abort()
私は少し前にスケジュールされたタスクについて徹底的に研究しました。スケジュールされたタスクには多くのアイデアがあると思いますが、Web に最も適しているのは、DZ や PHPWind と同様のトリガー タイプです。ほとんどの Web アプリケーションも同様であるようです。参考までに、その他にもいくつかお話しましょう
1. 安定したトリガーを提供するには、crontab+wget または ab を使用してスケジュールされたアクセスを提供します
2. nohup + php書き込みデーモン
3. PHP で直接無限ループを記述し、トリガーを提供します。このとき、ループの起動を支援するためにキャッシュまたはデータベースを使用する必要があり、トリガーの頻度を制御するには sleep または usleep を使用する必要があります。
4.crontab+php
5. Web トリガーの方法には違いがあります。1 つは時間トリガー、もう 1 つは定期トリガーです。DZ と PHPWind は両方とも時間トリガーです。
具体的な実装アイデアは簡単に考えられるので詳細は割愛しますホスト コンピューターがある場合は、crontab を使用してコマンド ライン PHP を実行する必要があります
コードでしか書けないものはない
ループを使用する場合は、ループを特定の処理プログラムから分離するのが最善です。そうしないと、メモリが増加し続けます。
今日、PHP マニュアルでこの関数 -ignore_user_abort を発見しました。この関数は、Linux での cron のようなスケジュールされたタスクの実装に役立ちます。実装方法を見てみましょう。
まずはPHPのマニュアルでこの関数の説明を見てみましょう
説明
intignore_user_abort ([ bool $setting ] )
クライアントの切断によりスクリプトが中止されるかどうかを設定します。
つまり、クライアントがブラウザを閉じるかどうかに関係なく、以下のプログラムが実行されます。
パラメータを見てみましょうパラメータ
設定
設定されていない場合、関数は現在の設定のみを返します。
この関数は、ignore_user_abort 関数を有効にするかどうかを決定するパラメーターを受け取ります。
戻り値を見てください:
戻り値
前の設定をブール値として返します。
ここでは前の設定が返されると書かれていますが、テストしたところ、このステートメントは明らかに int 型ではありません。信じられない場合は、php ファイルを書き込むことができます。試して。
ここまで述べましたが、PHP でこの関数を使用してスケジュールされたタスクを実装するにはどうすればよいでしょうか? 別の関数 (set_time_limit0) を使用することもできます。これにより、プログラムの実行時間を無制限に設定できます。 PHP のデフォルトの実行時間は 30 秒です。set_time_limit(0) を使用すると、プログラムを無制限に実行できます。プログラムが実行される前に、ignore_user_abort(1) と set_time_limit(0) を追加するだけです。 例を示します。
コードは以下のように表示されます:
http://www.bkjia.com/PHPjc/372013.html
www.bkjia.com