データベースのバックアップを実行し、特定のhtml出力なしで圧縮するphpスクリプトがあります。このスクリプトには、db に保存された指定の遅延が発生する前に実行を回避するための時間チェックが含まれています。問題は、Web サーバーがサポートしていないため、サーバーの cronjob タスクを使用できないことです。
したがって、訪問ごとにphpスクリプトを呼び出すjavascript関数を作成します(はい、私の目的には十分です)が、プロセスを終了するのに約1分かかるため、ページにアクセスするユーザーを遅らせることはありません。応答を待たずにスクリプトを実行することはできますか? ユーザーセッションが終了してもphpスクリプトは実行し続けることができますか?
私は次のようなものだと思います: http://drupal.org/project/poormanscron
前もって感謝します
編集: 解決策 1 (php のみ): これを私の出力の前に置く:
public static function cronjob() {
ignore_user_abort(true); // optional
session_write_close();//close session file on server side to avoid blocking other requests
header("Content-Encoding: none");//send header to avoid the browser side to take content as gzip format
header("Content-Length: ".ob_get_length());//send length header
header("Connection: close");//or redirect to some url: header('Location: http://www.google.com');
ob_end_flush();flush();//really send content, can't change the order:1.ob buffer to normal buffer, 2.normal buffer to output
//fastcgi_finish_request(); // important when using php-fpm!
// Do processing here
sleep(5);
require_once("./cron_job.php");
exit();
}
ob_start(); // will be closed in backup function
register_shutdown_function('cronjob');
解決策 2 (javascript を使用):
1) cronjobs を含むファイルを作成します
2) この JavaScript コードを HTML に追加します。
<script type="text/javascript">
// cron job
$.get('./cron_job.php');
</script>
これらのメソッドは、ユーザーのリクエスト時間には影響しません;)
みんなありがとう