2010-12-20 45 views
4

我的問題很簡單:我想知道PHP腳本執行多長時間。最重要的是,我正在通過cron執行它。現在,我可以通過PHP代碼本身來獲得執行時間的開始/結束,但是我想知道是否有某些東西通過cron命令添加到我的電子郵件中,以毫秒爲單位?Cron Job PHP腳本執行時間報告

目前我使用:

/usr/bin/php -q httpsdocs/folder/script.php > /dev/null 2>&1 

,哪個跑得我的劇本,並停止所有的錯誤/輸出得到通過電子郵件發送給我。我可以改變上面的方式來讓執行時間以某種方式通過電子郵件發送給我嗎?

感謝

回答

3

可以使用time命令是這樣的:

/usr/bin/time /usr/bin/php -q httpsdocs/folder/script.php > /var/log/crontiming 
+0

好消息是我得到了一些毫秒的時間..壞消息是,他們太小,無法正確。我還在/ var/log/crontiming上獲得了權限拒絕 – mootymoots 2010-12-20 23:11:33

+0

運行cron的用戶是否有權在'/ var/log/crontiming'上寫入? – ncuesta 2010-12-20 23:14:02

+0

我可以通過電子郵件發送郵件而不是登錄嗎? – mootymoots 2010-12-20 23:16:27

5
/usr/bin/time /usr/bin/php -q httpsdocs/folder/script.php 
| mail -s "Some Subject" [email protected] 

:-)

+0

給我發送一封空郵件:) – mootymoots 2010-12-20 23:10:47

+0

刪除'>/dev/null 2>&1'部分。 – ncuesta 2010-12-20 23:14:30

+0

你是對的,雖然我只是刪除腳本路徑後的一切。它默認爲mailto爲ncuesta狀態 – mootymoots 2010-12-20 23:23:26

1

通過給定的腳本,您可以更改cron作業的執行時間。

$aCronList = array(); 
$result = -1; 
exec('crontab -l', $aCronList, $result); 
foreach($aCronList AS $item) 
{ 
    // Find what you want, replace the times 
} 

$sCronList = implode(PHP_EOL, $aCronList); 
exec('crontab < ' . $sCronList);