Я искал, но не смог найти именно то, что искал.PHP `date()` Отличается от Unix `date` Command
У меня есть страница настроек PHP, на которой админы с моего сайта могут выбрать час дня для ежедневного запуска сценария Cron. В моем crontab
у меня скрипт работает каждый час. Когда скрипт запускается, он проверяет, соответствует ли текущий час часу, который запросила страница настроек.
Причина, по которой я сделал это, потому что я абсолютно не мог понять способ редактировать файл crontab
через PHP, несмотря на то, что он много тестировал и изучал предмет. Бонусные очки, если вы можете помочь мне выяснить способ сделать это.
Настоящая причина, по которой я создаю этот вопрос, состоит в том, что у меня возникают некоторые проблемы с моим временем в Unix-сервере. Когда на моей машине localhost (IIS) скрипт Cron выполняет каждый час, как это предполагалось, но когда я переместил все на свою машину Unix Amazon, время отключилось ровно через пять часов.
Задача Cron по-прежнему работает по часам, как и предполагалось, но когда скрипт PHP проверяет, соответствует ли текущее время (с использованием date("G")
) времени настроек, оно не будет работать так, как предполагалось. Конечно, в конечном итоге он будет обработан ровно через пять часов.
Я не думаю, что это совпадение, что я живу в центральном часовом поясе, в котором также бывает пять часов, поэтому я почти уверен, что это связано с этим.
Я мог бы написать обход, который всегда будет компенсировать время на пять часов, но это приведет к тому, что поля моей даты будут неточными (я думаю), и это будет своего рода растяжка. Я бы предпочел просто спросить, потому что я уверен, что многие люди читают это и думают, что я глуп, потому что не знаю ответа. более
одно:
У меня есть эта строка кода в моем сценарии. Что-нибудь еще мне нужно поделиться?
date_default_timezone_set('America/Chicago');
EDIT: объяснение того, что ваш "исправить" это было бы весьма признателен.
Возможный дубликат: http://stackoverflow.com/questions/8244128/why-does-the-date-php-and-date-unix-does-not-match – zessx
Его лучше рассчитать все в формате UTC. Когда вы показываете это пользователю, просто применяйте часовой пояс. –
@samsamX Спасибо за быстрый ответ. Сейчас я смотрю больше. Я также надеялся получить некоторые отзывы о редактировании Crontab через PHP с этим. –