![](/img/trans.png)
[英]PHP locking / making sure a given script is only running once at any given time
[英]Making sure php script is only run locally
我正在通過linux cronjob運行PHP腳本,我想確保它只能從我指定的IP地址的計算機遠程運行,再加上通過cronjob。 現在,我可以從$_SERVER['REMOTE_ADDR']
檢查遠程IP地址,但這樣做也會通過cronjob停止執行。所以,如何讓兩件事都有效?
將cronjob移出您的網絡根目錄。
然后,您可以檢查cron是否在cli上運行:
if (php_sapi_name() != 'cli') {
die();
}
在您的Web服務器上調整Cron並不是一個好主意。 然后每個人都可以啟動它。
您還需要檢查它是否也從命令行運行以處理cron情況
if (php_sapi_name() == 'cli' || $_SERVER['REMOTE_ADDR'] == 'your.ip.add.ress') {
// allow
}
除了檢查IP地址之外,您還可以使用php_sapi_name
函數檢查本地(cron)執行,如下所示:
if (php_sapi_name() == 'cli' || $_SERVER['REMOTE_ADDR'] == 'xxx.yyy.zzz.vvv') {
//do your stuff
}
else {
/show some error
}
也就是說,你需要記住,遠程地址很容易被欺騙,因此依賴它是不好的,至少如果服務器是對互聯網開放的話。 如果您在本地網絡上運行,它會更安全一些。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.