[英]Run a php script only from Cron or check if request from cron?
我怎樣才能從cron運行php腳本,或者是否可以檢查請求是否來自cron?
編輯
我試圖用參數調用php文件。 但它們都不起作用:
php -q /home/domain/public_html/cronjob.php?i=a
php -q /home/domain/public_html/cronjob.php par1
php -q /home/domain/public_html/cronjob.php par1=a
php -q /home/domain/public_html/cronjob.php par1='a'
我不能使用$ _GET,$ _ SESSION或$ argv。 我如何用參數調用文件?
如果您要問這個是因為您需要檢查腳本是否未通過Web請求調用,您可以使用php_sapi_name
函數查看調用方法 - 如果它是一個cron作業,該函數應該返回指示命令的cli
線路電話。 但是,它不能幫助區分cron作業和常規命令行調用。
如果您還需要區分cron作業和腳本的命令行調用,則可以檢查運行腳本的用戶,看看它是否應該運行cron作業。 例如,可以使用posix_getuid
或posix_getlogin
函數在* nix系統上posix_getuid
。
最后,如果您擔心有人以cron作業所有者身份登錄並從命令行運行腳本,則應該使用單獨的用戶,而不使用shell作為cron作業。
您可以將一個參數傳遞給您的腳本,該參數表明它是在cron作業中調用的。 看一下這個問題: cron-jobs-calling-a-php-script-with-variables
如何將一些auth密鑰傳遞給您的腳本,該腳本僅存儲在cron_script和接收器腳本中。 通話時檢查authkey是否通過接收器腳本中的$ _GET ['auth_key']傳輸。
喜歡: http : //www.example.com/receiver_script.php? auth_key = “WhatEverYouWant”
好吧,我找到了解決方案。 如果你想用一個GET參數調用php文件,你應該這樣調用文件:
php -q /home/domain/public_html/cronjob.php name=value
你可以使用$ _GET在php文件中獲取這些數據:
$_GET['name']
或者argv:
$argv[1]
如果要將參數傳遞給argb:
php -q /home/domain/public_html/cronjob.php value
我在網站上找到的其他例子不起作用但這些工作很好..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.