Ошибка 504 при добавлении комментария в вордпресс.

Решено

Здравствуйте, у меня на сайте довольно большая посещаемость в районе 15-20тыс. в сутки. В постах где надбавлено много комментариев периодически возникает ошибка 504 при попытке добавить комментарий. При этом не смотря на ошибку комментарий сохраняется, его можно увидеть если вернуться на страницу после ошибки.
Ошибка возникает только где много комментариев.
Сама ошибка походу возникает в файле /wp-comments-post.php, так как именно эта страница остается открытой при ошибки.

Добавить Комментарий
Ответ

Да действительно при большой посещаемости или про большой базе в вордпресс, при добавлении комментария может возникать ошибка 504.
Все дело в том что при добавлении коммента в базу, вордпресс использует функцию wp_new_comment которая на самом деле не такая уж и быстрая и при выполнении может вызвать большую нагрузку на сервер.
Что бы это поправить откройте файл /wp-comments-post.php который находится в корне сайта.
Найдите строку:

 $comment_id = wp_new_comment( $commentdata );
 

и замените ее на

 if ( is_user_logged_in() ) {
$comment_approved = 1;
} else {
$comment_approved = 0;
};
$comments_info = array(
'comment_author_IP' => $_SERVER["REMOTE_ADDR"],
'comment_agent' => $_SERVER['HTTP_USER_AGENT'],
'comment_date' => current_time('mysql'),
'comment_approved' => $comment_approved
);
 $result_data = array_merge ($commentdata, $comments_info);
 //$comment_id = wp_new_comment( $commentdata );
 $comment_id = wp_insert_comment( $result_data );
 

wp_insert_comment — меньше нагружает сервер при сохранении нежели чем wp_new_comment

При этом стоит учесть что плагины да и сам вордпресс может вешать события на функцию сохранения комментария wp_new_comment после данных изменений они не будут работать. Если вам это не подходит, то нужно проверить путем отключения плагинов какой именно вызывает большую нагрузку(ошибку 504) или сделать поиск по плагина, нужно искать 

add_action('comment_post', 'ххх' );

Часто бывает что большую нагрузку дают плагины подписок и рассылки подписчикам сообщений о новом комментарии.

Добавить Комментарий

Ваш ответ

Размещая свой ответ, вы соглашаетесь с правилами сайта.