簡體   English   中英

顯示通過Cron運行PHP腳本的次數

[英]Show Number of Times a PHP Script is Running via Cron

我有一個通過cron在服務器上運行作業的php腳本。 基本上,cron每分鍾運行一次,例如:

        • php /path/to/my/script/script.php

該腳本可以運行多次,並且可以繼續運行一段時間。

我正在嘗試做的是找到一種方法來讀取為此用戶運行的進程,並計算script.php運行了多少次。 在cron實際運行之前。 基本上,這樣,如果有10個腳本實例在運行,則只有少於10個實例在運行,腳本的其他實例才會啟動。 我需要確保如果有10個正在運行它不會啟動。

希望這是有道理的。 ;)

讀取過程取決於您使用的操作系統,並且會有所不同。 相反,每次運行腳本時,您都可以將詳細信息寫入數據庫。 喜歡;

process_name  - run_time - is_completed 

在運行腳本之前,您需要檢查進程表中未完成的進程是否超過10個。 您還將有日志記錄

首先,您應該將對PHP腳本的調用放在Shell腳本中。

在此腳本中,第一步將是計算您的PHP程序的當前運行實例。

如果計數低於定義的限制(在您的情況下為10 ),請運行您的PHP程序的新實例。

現在,關於如何計算當前正在運行的實例,您可以使用ps命令和grep命令(以過濾進程),然后通過wc -l命令(以進行計數)來實現。

或者,您可以在運行新實例之前創建一個唯一的空文件,例如/tmp/php_script_<timestamp> ,然后在PHP腳本結束時將其刪除。

然后,對實例進行計數就等於對/tmpphp_script_ (另一個用wc -l php_script_ grep )開頭的文件數進行計數。

如果要使用bash腳本對其進行檢查,請嘗試將ps axgrep結合使用:

ps ax | grep 'php /home/janj/www/test.php'

這將返回類似於以下內容的內容:

17857 ?        Ss     0:00 /bin/sh -c php /home/janj/www/test.php
17858 ?        S      0:00 php /home/janj/www/test.php
17897 ?        Ss     0:00 /bin/sh -c php /home/janj/www/test.php
17898 ?        S      0:00 php /home/janj/www/test.php
17903 pts/7    S+     0:00 grep --color=auto php /home/janj/www/test.php

結合使用maxime.bochon答案,您將獲得完整的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM