Drupal 6のインストールを維持しています。タスクはすべての登録済みユーザーに電子メールを送信することでした。デフォルトアクション「1つのルールを含むすべてのユーザーに電子メールを送信する」を含むルールセットを使用していましたルールセットがスケジュールされ、実行され、スケジュールから削除されました(自動的に期待どおりに)が、タスクはバックグラウンドで永久に再起動したようです。すべての(またはおそらく多くの)ユーザーは1時間ごとにメールを受け取りました(私はcronを停止するまで6回です。poormans-cronを使用します。
この質問に答えるのを手伝ってください:
ログは示しています:
エラーcron 18/02/2012-12:04 cronは1時間以上実行されており、スタックしている可能性が高いです。 警告cron 18/02/2012-11:08 cronの実行は制限時間を超え、中止されました。 エラーcron 18/02/2012-11:04 cronが1時間以上実行されており、スタックしている可能性があります。 警告cron 18/02/2012-10:07 cron実行が制限時間を超えて中止されました。 エラーcron 18/02/2012-10:03 cronは1時間以上実行されており、スタックしている可能性があります。 警告cron 18/02/2012-09:07 cronの実行が制限時間を超えて中止されました。 エラーcron 18/02/2012-09:03 cronが1時間以上実行されており、スタックしている可能性が高いです。 エラーcron 18/02/2012-09:02 cronが1時間以上実行されており、スタックしている可能性があります。 エラーcron 18/02/2012-07:50 cronがさらに実行されています1時間より長く、スタックしている可能性が高いです。 警告cron 18/02/2012-06:46 cron ru nが時間制限を超えたため中止されました。
付録1、19.2.2012
私はPHPMailerモジュールを使用してメールを送信します。
私は問題を見つけて、drupalコアでファイルを変更しました:cores/common.inc、2714行目:
function drupal_cron_run() {
// Try to allocate enough time to run all the hook_cron implementations.
if (function_exists('set_time_limit')) {
@set_time_limit(240); // will return a fatal error, if the script runs more than 4min
}
...
Set_time_imit(240)行を次のように変更しました:
@set_time_limit(2400);
すべてのメールの送信に約14分かかるため。
お時間をありがとうございました。スパイキー
私はあなたのPHP構成がcronを終了させていないように思います。poormanscronをオフにしてから、MySQLデータベースのcronエントリを削除してください:
DELETE FROM `variable` WHERE name = 'cron_semaphore';
DELETE FROM `variable` WHERE name = 'cron_last';
次に、admin/reports/statusに移動し、PHP=バージョンをクリックして、phpinfo()の出力を確認します。最大実行時間とは何ですか?メモリ制限とは何ですか?これらの値をより大きな数値に変更し、このページで実際に異なることを確認してから、admin/reports/statusで手動でcronを実行します。
PHPでこれらの2つの値を変更するには、サイトのwebrootにphp.iniを作成(または編集)して、追加(または変更)します。
max_execution_time = 300
memory_limit = 256M
もちろん、ここで好きな数字を自由に試してみてください。必要がない場合は、メモリ制限を非常に高くしたくないのが理想です。