cron、毎分RAMの問題

cron、毎分RAMの問題

wordpress cron.phpファイルからPHPを実行するcronjobがあります。これは主にリリーススケジュールをキャッチするために使用され、キャッシュをフラッシュすることもできると思います。

毎分 cron ジョブを実行します。私は定期的にpsをチェックし、cron.phpを実行している2つのPHPインスタンスを見ました。これでインスタンスを実行すると、必要なすべてのタスクが実行されるため、これは必要ありません。メモリをチェックするもう1つの作業がありますが、時にはメモリの競合を引き起こす2つのインスタンスがあります(常に使用可能なメモリがたくさんあり、メモリを減らすことはできますが、そうしたくありません)。私は仕事が1分以上かかるとは思えません(可能であっても)。

プロセスがすでに存在する場合は、どのようにタスクを実行できますか?データベースに接続/使用しないと、PHPコード自体をチェックできないと思いますか?使用できるcronコマンドはありますか? 1分以上インスタンスを終了したくありません。新しいものを作成しないでください。

ベストアンサー1

これは単純なbashスクリプトソリューションです。 cron.phpスクリプトでも同じことができます。実際には、長すぎる実行されているプロセスを確認してください。これは自動化されたシステムにとって良いアイデアかもしれません。

#!/bin/bash

# Exit if process is already running
if test -e /tmp/wordpress-job.pid; then
  # Check if the pid that was stored in /tmp/wordpress-job.pid does exist
  if ps ax -o pid= | grep $(cat /tmp/wordpress-job.pid ) &> /dev/null; then
    exit 0
  fi
fi

# Create the file that marks this process as running
echo $$ > /tmp/wordpress-job.pid

# Some extra security check to prevent the pid file
# to survive.
trap "rm -f /tmp/wordpress-job.pid" EXIT TERM INT HUP 

# Start the long-running process in the background
sleep 3600 & # long-running process

# Sleep some time before trying to kill that process
sleep 300

# Kill job if it takes longer than it should
kill %1

# Delete the file that marks this process as running
rm -f /tmp/wordpress-job.pid

「sleep 3600」をphpコマンドラインに置き換え、以下の300をスクリプトの実行が許可される最大時間に変更する必要があります。

おすすめ記事