Intereting Posts
Отправка нескольких параметров данных с помощью jQuery AJAX Как реализовать PubSubHubbub? Получение пустой страницы PHP поверх Apache Завершение кода Eclipse PDT + не работает вообще Использование сеанса в пользовательском промежуточном программном обеспечении в laravel Как оптимизировать хранение и выбор из огромного списка в php? ZEND – Как заставить его работать на общем хосте? Symfony2, Как передать параметры сортировки и направления с помощью KnpPaginatorBundle и QueryBuilder Генерация галереи динамических изображений с использованием PHP и jQuery Laravel Scheme Builder добавляет auto_increment ко всем целочисленным полям, которые не позволяют Новая recaptcha не работает дважды (в основном) на той же странице Обновление файла RSS из другого XML-файла Запуск и остановка рабочих в gearman php Значения по умолчанию для типов данных varchar и int mysql Лучший способ реализовать счетчик загрузки?

Выполнять скрипт php ежедневно с помощью wordpress

Я нашел скрипт, проверяющий статус URL-адреса. Теперь я пытаюсь интегрировать его с wordpress. Это код:

<?php /* Plugin Name: checkOnline Status Version: 0.1 */ add_action( 'cO_cron_hook', 'CheckRemoteService' ); if( !wp_next_scheduled( 'cO_cron_hook' ) ) { wp_schedule_event( time(), 'daily', 'cO_cron_hook' ); } register_deactivation_hook( __FILE__, 'bl_deactivate' ); function bl_deactivate() { $timestamp = wp_next_scheduled( 'cO_cron_hook' ); wp_unschedule_event($timestamp, 'cO_cron_hook' ); } function CheckRemoteService($atts) { extract(shortcode_atts(array( 'url' => 'http://', 'cache' => '600', // 60*10 (10 minutes) 'online' => 'Online', // Custom online msg 'offline' => 'Offline' // Custom online msg ), $atts)); $CachedStatus = 'cstatus_' . $url; $cachedposts = get_transient($CachedStatus); if ($cachedposts !== false) { return $cachedposts; } else { // Sometimes its best to change to a custom agent message // so you know where requests are coming from. $agent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)"; $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL,$url ); curl_setopt($ch, CURLOPT_USERAGENT, $agent); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch,CURLOPT_VERBOSE,false); curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_setopt($ch, CURLOPT_NOBODY, 1); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch,CURLOPT_SSLVERSION,3); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE); curl_exec($ch); $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if($httpcode >= 200 && $httpcode < 400) { return $online; } else { return $offline; } set_transient($CachedStatus, $return, $cache); return $return; } } add_shortcode('checkmyurl','CheckRemoteService'); ?> 

Я хочу, чтобы этот код запускался один раз в день. Как я могу заставить его не запускаться при обновлении или на странице, где я использую короткие коды? Мне нужно отображать статус около 50 сайтов, и загрузка занимает более 10 секунд. Извините за этот простой вопрос (я новичок в этом), но я не могу найти решение. Благодарю.

РЕДАКТИРОВАТЬ. Решено использовать http://wordpress.org/plugins/crony/

Вы можете использовать wp_schedule_event() для планирования повторяющихся задач.

wp_schedule_event() ( документация ):

Расписание крюка, который будет выполняться ядром действий WordPress на определенный интервал, указанный вами. Действие будет инициироваться, когда кто-то посетит ваш сайт WordPress, если запланированное время прошло. См. API Plugin для списка перехватчиков.

Чтобы планировать мероприятие ежедневно, вы бы сделали что-то вроде этого:

 function someFunc() { wp_schedule_event( time(), 'daily', 'mydailyEventHook'); } 

Надеюсь это поможет!