Как я могу запустить php-скрипт только из cron или можно проверить, поступает ли запрос от 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. Как я вызываю файл с параметром?
Если вы спрашиваете об этом, потому что вам нужно проверить, не вызван ли сценарий из веб-запроса, вы можете использовать функцию php_sapi_name
чтобы увидеть метод вызова – если это задание cron, функция должна возвращать cli
который указывает команду лайн вызов. Тем не менее, это не помогает различать задание cron и регулярный вызов командной строки.
Если вам также необходимо провести различие между заданием cron и вызовом командной строки скрипта, вы можете проверить пользователя, выполняющего скрипт, и посмотреть, будет ли оно работать с cron. Это можно сделать, например, в системе * nix, с posix_getuid
или posix_getlogin
.
Наконец, если вы беспокоитесь, что кто-то входит в систему как владелец задания cron и запускает скрипт из командной строки, вы должны использовать отдельного пользователя без оболочки для заданий cron.
Как насчет передачи некоторого ключа auth в ваш скрипт, который хранится только в сценарии cron_script и получателя. При вызове проверки, если authkey передается через $ _GET ['auth_key'] в вашем сценарии приемника.
Например: http://www.example.com/receiver_script.php?auth_key= "WhatEverYouWant"
Хорошо, я нашел решение. Если вы хотите вызвать php-файл с параметром GET, вы должны вызвать файл следующим образом:
php -q /home/domain/public_html/cronjob.php name=value
и вы можете получить эти данные в php-файле, используя $ _GET:
$_GET['name']
или argv:
$argv[1]
Если вы хотите передать параметр просто argb:
php -q /home/domain/public_html/cronjob.php value
Другие примеры, которые я нашел на веб-сайтах, не работают, но они отлично работают.
Вы можете просто передать параметр в свой скрипт, который говорит, что он был вызван в задании cron. Взгляните на вопрос: cron-jobs-call-a-php-script-with-variables