簡體   English   中英

僅從Cron運行php腳本或檢查來自cron的請求?

[英]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_getuidposix_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.

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