Вопрос № 178622: Уважемые эксперты! Есть довольно интересный вопрос. Есть скрипт: http://moshoster.net/test.txt Он просто получает текущую дату. А вот результат его работы: <...
Вопрос № 178622:
Уважемые эксперты! Есть довольно интересный вопрос.
Отвечает Хватов Сергей, Профессионал :
Здравствуйте, Калашников О.А.. Формулирую ответ по результатам совместных экспериментов.
Это прежде всего ошибка в сервере Apache, связанная с особенностями его архитектуры: при его работе запускаются несколько подпроцессов, каждый из которых обслуживает по несколько разных запросов. Кроме того, интерпретаторы perl, php и python в нём встроенные. В результате если какой-то из скриптов сделает изменения в environment, эти изменения попадут и в некоторые другие запросы. В этом бы не было особой ошибки,
если бы environment неявно не использовалась в ряде библиотечных функций. localtime() использует TZ, и изменение каким-то скриптом TZ и вызвало тот эффект, который вы наблюдали - неожиданное изменение временной зоны в скрипте. Дже в логи записывается дата с изменённой зоной. В Интернете также упоминаются эффекты от изменения LANG и LC_* Чтобы этого избежать, придётся перед использованием localtime() явно удалять $ENV{'TZ'}. Возможно, что также придётся
для корректировки уже заполненных статических данных вызвать POSIX::tzset (мне в python не понадобилось)
Ответ отправил: Хватов Сергей, Профессионал
Ответ отправлен: 25.05.2010, 21:34
Номер ответа: 261646
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 261646
на номер 1151 (Россия) |
Еще номера »
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.