WordPress. Опыты с wp-cron




Как-то раз на одном из моем хостинге, при разворачивании нового сайта, вызов wp-cron.php из wordpress не работал. Все бы было хорошо, если бы мне не понадобился плагин WP Super Cache для корректной отдачи HTTP заголовков, который при активации проверяет доступность wp-cron.php вот этим кодом:

$cron_url = get_option( 'siteurl' ) . '/ wp-cron.php?check=' . wp_hash('187425');
$cron = wp_remote_get($cron_url, array('timeout' => 0.01, 'blocking' => true)); 
if( is_array( $cron ) ) { 
   if( $cron[ 'response' ][ 'code' ] == '404' )

Мдя. У меня аккурат 404 и возвращало. Ну как сие обойти, догадаться не сложно, но вот как мусор подчищать в кэше было не очевидно. Обкурившись интернета до полной нирваны, решил устроить дерганье wp-cron.php средствами сервера хостинга, благо у меня такая возможность есть.

В процессе по наступал на россыпь маленьких граблей, о них тут и расскажу. Первое что надо сделать, это сказать wordpress, что мы сами знаем как часто нам крон дергать. Для этого в файле wp-config.php рисуем строку:

define('ALTERNATE_WP_CRON', true);

повыше директивы

require_once(ABSPATH . 'wp-settings.php');

После того, как это прописалось, я взял голыми руками wp-cron.php и скопировал его в файл vasya_forever.php и положил рядом с файлом wp-cron.php в тот же каталог.

Этого глумления мне показалось мало, поэтому я вместо прав 644 выдал файлу vasya_forever.php права 755. Мне его надо будет посторонними вещами дергать, для этого и сыр-бор. Если выставить 755 на wp-cron.php то любой шланг из интернета сможет дергать ваш wordpress cron когда угодно, и в общем-то нагрузить сервер от души, если запросов будет много. Соответственно, настоящее имя файла вася-форевер я не скажу, и вы ни кому не говорите.

После этих манипуляций я в DirectAdmin для крона прописал следующую команду запуска:

*/15****/usr/bin/wget -O tempo http://myenotes.ru/vasya_forever.php > /dev/null

Это извращение заставляет wget, с сервера хостинга, каждые 15 минут обращаться к файлу vasya_forever.php, который будет выполнять крон-задания вордпресс. Все, что wget получит, он будет аккуратно складывать в файл tempo, затирая его при каждом вызове. Директива >/dev/null  заставляет cron писать не мне на почту, как это принято в Unix системах, а сразу все письма умножать на ноль, чтоб не отвлекали. Продолжаться этот бардак, как вы понимаете, будет до тех пор, пока мне не надоест.


Рубрика WordpressМетки

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *