每天使用wordpress执行php脚本

每天使用wordpress执行php脚本,php,wordpress,caching,cron,Php,Wordpress,Caching,Cron,我找到了一个检查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_h

我找到了一个检查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秒加载现在。 很抱歉这个简单的问题(我对此一无所知),但我找不到解决办法。 谢谢


编辑。使用

解决您可以使用
wp\u schedule\u event()
计划定期任务

wp\u计划事件()
():

安排一个钩子,该钩子将由WordPress操作核心按照您指定的特定间隔执行。当有人访问您的WordPress站点时,如果计划时间已过,则会触发该操作。有关挂钩列表,请参见插件API

要安排每天的活动,您可以执行以下操作:

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

希望这有帮助

名称是一个提示。Wordpress cron似乎可以工作,函数已调度。我的问题是避免在进入网站和刷新页面时加载它。谢谢。如果我刷新页面,会阻止脚本的执行吗?谢谢。当我刷新页面时,我使用50个短代码来获取50个站点的状态,脚本总是运行(需要10秒以上)。所以我需要一些东西来阻止这个脚本在访问或刷新页面时执行。用户访问页面并运行脚本(超过10秒),用户刷新页面并再次运行脚本。用户应该只看到来自cron的脚本结果。谢谢