6

私は基本的に、データベース内の何千もの製品を更新する毎晩実行される cron ジョブを持っています。

私が夜間に cron ジョブを実行する理由は、この時間帯に多くの人がサイトにアクセスしないため、サーバーの待ち時間が少なくなるためです。cron ジョブは何日も何の干渉もなく実行できます。

cron ジョブ コマンドは次のようになります。

30 23 * * *     /usr/bin/php /var/www/ul/prices_all.php >> /var/www/ul/log/prices_all.txt

私が知りたいのは、たとえば 5 時間後にこのプロセスを強制終了する cron ジョブを作成できるかどうかです。

30 05 * * *     kill /var/www/ul/prices_all.php[process]
4

2 に答える 2

17

タイムアウト (coreutils) でこれを行うことができます。

30 23 * * *   timeout 18000  /usr/bin/php /var/www/ul/prices_all.php >> /var/www/ul/log/prices_all.txt

単純にタイムアウト (18000 秒 = 5 時間) を設定し、その時間以降もプロセスが実行されている場合はプロセスを強制終了します。

または、php ファイル自体にタイムアウトを設定することもできます。

<?php set_time_limit(18000);
于 2013-01-31T22:31:15.347 に答える
0

はい、5 時間後にプロセスを強制終了する cronjob を作成できます。これを行うには、いくつかの適切な方法があります。たとえば、最初のスクリプトで起動時に pid ( getmypid()で取得できます) をファイルに書き込み、2 番目の cron ジョブでその pid を読み取って強制終了することができます。これは機能しますが、かなり洗練されていません。

より洗練された方法は、PHP 構成で許可されている場合 (つまり、セーフ モードでない場合)、スクリプト自体に実行制限を設定することです。

于 2013-01-31T22:33:28.893 に答える