#php #server
#php #сервер
Вопрос:
Я использую HostGator для некоторых клиентских веб-сайтов, и это общая настройка облачного сервера. Мне нужно запустить этот скрипт:
<?php
date_default_timezone_set("America/Los_Angeles");
?>
потому что время сервера настроено на часовой пояс, который нигде не близок к США.. Как мне выполнить этот скрипт, чтобы время сервера изменилось.. Они не поддерживают (HostGator) изменение времени сервера, но предлагают запустить приведенный выше скрипт.
Любая помощь будет оценена.
Комментарии:
1. Привет, Джейсон, тебе нужно запустить эту команду в исполняемом скрипте, то есть она должна быть в твоем файле «…. php» в виде кода.
Ответ №1:
Серверы, предполагающие, что они работают в географически разных частях мира, будут иметь разные даты и время, в зависимости от их часового пояса. Что происходит при переходе на сервер, находящийся в другом часовом поясе? Все ваши даты и время будут сдвинуты, что может вызвать некоторые довольно серьезные проблемы.
Вы также можете столкнуться со сценариями, в которых сервер приложений (скажем, PHP) работает в одном часовом поясе, в то время как сервер базы данных (скажем, PostgreSQL) работает в отдельном часовом поясе — что вы делаете тогда, когда некоторые даты и времени могут быть сгенерированы PHP, а другие — PostgreSQL?
Ответ заключается в том, чтобы учитывать timezones
.
Языки программирования, такие как PHP и Python, а также базы данных, такие как MySQL и PostgreSQL, обладают способностью работать не только в жестко привязанном к серверу времени, но и в более гибких часовых поясах.
В таких базах данных, как PostgreSQL, вы можете установить тип данных timestamp with time zone
равным .
В PHP вы можете использовать часовые пояса, чтобы исправить разницу между датой и временем, которые сервер отображает по умолчанию, и тем, что может ожидать пользователь.
Вот пример на PHP, который позволяет:
- Получить текущую дату и время сервера
- Преобразуйте дату и время сервера в часовой пояс, в котором находится пользователь
- Отображение преобразованного datetime для пользователя
<?php
// Set the user's timezone:
$user_timezone = 'America/Detroit';
// Get the current datetime
$datetime = new DateTime();
// Display the server's datetime in human-readable and UNIX timestamp formats
print(
"nServer's Datetime: " . $datetime->format('Y-m-d H:i:s') . "" .
"nServer's Timestamp: " . $datetime->getTimestamp() . "" .
);
// Instantiate a DateTimeZone object representing the user's timezone
$timezone = new DateTimeZone( $user_timezone );
// Set the timezone on that datetime to be the user's timezone
$datetime->setTimezone( $timezone );
// Display the converted datetime to the user in human-readable format:
print(
"nUser's Datetime: " . $datetime->format('Y-m-d H:i:s') . "" .
"nUsers's Timestamp: " . $datetime->getTimestamp() . "" .
);
?>
Отказ от ответственности, я не тестировал ни один из приведенных выше кодов, только созданный из ссылок на PHP:
- Объект Datetime: https://www.php.net/manual/en/class.datetime.php
- Объект DateTimeZone: https://www.php.net/manual/en/class.datetimezone.php
- Список часовых поясов: https://www.php.net/manual/en/datetimezone.listidentifiers.php
Если вы не уверены, что $user_timezone
должно быть установлено, запустите эту команду на php и просмотрите результат:
<?php
print_r(
timezone_identifiers_list()
);
>?>