На серверах использующих связку Nginx+Apache заметил у вордпресс-сайтов массовую «болячку» в виде кучи пустых незавершенных (когда клиент отключился ДО обработки запроса с кодом 499) POST-запросов вида:
26.07 23:08:42 ххх.ххх.ххх.ххх POST /wp-cron.php?doing_wp_cron=*****.***** HTTP/1.0" 499 0 "-" WordPress/4.5.х
Запросы эти отправляются скриптами сайта к самому себе и нужны для работы внутреннего псевдокрона (публикация в нужное время запланированных сообщений, например).
Но так как в скриптах отвечающих за формирование запроса не задан тайм-аут, то получается что «клиент» (скрипт отправивший запрос) отключается раньше чем он обработан нжинксом и передан апачу. В результате чего запланированная задача не выполняется.
Исправить ошибку просто — отредактируйте файл /wp-includes/cron.php заменив в строке 322
'timeout' => 0.01,
на
'timeout' => 5,
а также сразу после строки 329 (wp_remote_post( $cron_request[‘url’], $cron_request[‘args’] );) добавив:
usleep(5000000);
Прокомментировать