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マニュアルでこの関数の説明を見てください
説明
クライアントの切断によりスクリプトが中止されるかどうかを設定します。
つまり、クライアントがブラウザを閉じるかどうかに関係なく、次のプログラムが実行されます。
Parameters
。
設定されていない場合、関数は現在の設定のみを返します。
この関数は、ignore_user_abort 関数を有効にするかどうかを決定するパラメーターを受け取ります。
戻り値
ここでは、前の設定が返され、値が bool であると書かれていますが、このステートメントは明らかに int 型です。信じられない場合は、php ファイルを作成してテストできます。それ。
コードをコピーします
コードは次のとおりです: