У меня есть следующая конструкция пользовательского бэкэнда администратора, которая отлично работает в производственном процессе, но при локальном тесте бродяги машинный он работает с тайм-аутом (я пометил строку из сообщения об ошибке в скрипте с помощьюкомментарий).
Я уже увеличил время выполнения до 300 с 30, но оно вызывает ту же ошибку.Итак, я предполагаю, что цикл while работает бесконечно?!
Причиной того, что tempdate и datetime не соответствуют ограничению! = Для этого просмотрите временные метки в журнале ошибок.Я сделал ту же ошибку, регистрируя на производстве. Кажется, на производстве даты создаются следующим образом (2019-03-28 16: 30: 14.000000), в то время как на тесте они также имеют микросекунды, которые затем отличаются и не соответствуют критериям времени.из! = разорвать цикл
Вопрос:
Может кто-нибудь объяснить, почему date_create () не дает мне микросекунд, а на тесте вызываетвремя не работает должным образом?
public $_datefrom = null;
public $_dateto = null;
public function __construct () {
//(...deleted stuff to post this.....)
$datetime1 = date_create($this->_datefrom);
$datetime2 = date_create($this->_dateto);
$tempdate = date_create($this->_datefrom);
$tempdateto = new DateTime();
$this->_aIntervalDateArray[$tempdate->format('d.m.Y')] = array();
ini_set('max_execution_time', 300); //300 seconds = 5 minutes
while($tempdate != $datetime2) {
print_r("tempdate "); var_dump($tempdate); print_r(" datetime2 ");var_dump($datetime2);print_r("<br>");// debugging
$tempdate->modify('+1 day'); // row 119 <<<<<<<<
if($tempdate <= $tempdateto ) {
$this->_aIntervalDateArray[$tempdate->format('d.m.Y')] = array();
}
}
$this->_datefrompast = $datetime1->modify('-1 year')->format('Y-m-d');
$this->_datetopast = $datetime2->modify('-1 year')->format('Y-m-d');
$datetime1_past = date_create($this->_datefrompast);
$datetime2_past = date_create($this->_datetopast);
$tempdatePast = date_create($this->_datefrompast);
$this->_aIntervalDateArrayPast[$tempdatePast->format('d.m.Y')] = array();
while($tempdatePast != $datetime2_past) {
$tempdatePast->modify('+1 day');
if($tempdatePast <= $datetime2_past ) {
$this->_aIntervalDateArrayPast[$tempdatePast->format('d.m.Y')] = array();
}
}
$interval = date_diff($datetime1, $datetime2);
$this->_dateinterval = $this->days_between() + 1;
$this->_user = $oUser = $this->getUser();
parent::__construct();
}
СООБЩЕНИЕ ОБ ОШИБКЕ:
[28 марта 14: 14: 48.572803 2019] [необработанная ошибка] [тип E_ERROR] [файл / var/www/oxideshop/source/modules/comp/gg_analytics/application/controllers/admin/admin_gganalytics_view.php] [строка 119] [код] [сообщение Максимальное время выполнения превышает 300 секунд]
Ошибкаведение журнала:
tempdate
/var/www/oxideshop/source/modules/comp/gg_analytics/application/controllers/admin/admin_gganalytics_view.php:145:
object(DateTime)[38]
public 'date' => string '2019-03-28 15:13:20.613671' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Berlin' (length=13)
datetime2
/var/www/oxideshop/source/modules/comp/gg_analytics/application/controllers/admin/admin_gganalytics_view.php:145:
object(DateTime)[37]
public 'date' => string '2019-03-28 15:13:20.613669' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Berlin' (length=13)
tempdate
/var/www/oxideshop/source/modules/comp/gg_analytics/application/controllers/admin/admin_gganalytics_view.php:145:
object(DateTime)[38]
public 'date' => string '2019-03-29 15:13:20.613671' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Berlin' (length=13)
datetime2
/var/www/oxideshop/source/modules/comp/gg_analytics/application/controllers/admin/admin_gganalytics_view.php:145:
object(DateTime)[37]
public 'date' => string '2019-03-28 15:13:20.613669' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Berlin' (length=13)