2012-03-25 11 views
1

私はワードプレスのブログでcronジョブを実装しようとしています。その私をチェックするためのCronとWordPressは機能しません。私は何を忘れましたか?

add_filter('cron_schedules', 'ten_minute_prefix'); 
function ten_minute_prefix($schedules) 
{ 
    $schedules['tenmins'] = array(
     'interval' => 600, 
     'display' => __('10 minutes'), 
    ); 
    return $schedules; 
} 

//This must be here always 
add_action('my_task_hook', 'foo_task'); 
function foo_task() 
{    
    file_put_contents('data.txt', date("Y-m-d H:i:s") . "task do it\r\n", FILE_APPEND); 
} 

//This is executing in my plugin page in tools section 
function myplugin() 
{ 
    //For checking permissions 
    file_put_contents('data.txt', date("Y-m-d H:i:s") . "Task begin\r\n", FILE_APPEND);  
    wp_schedule_event(time(), 'tenmins', 'my_task_hook'); // hourly, daily and twicedaily 
    echo "SCHEDULE ACTION"; 
    ... 
} 

:私は、私はこのコード(PHP)を書いたことを私はいくつかのログ情報を一つのファイルに10分ごとに書き込みしようとしているテストのために、プラグインではこのようなものをしたい、のために行います実際にcronジョブを作成しました。たとえば、このプラグインを使用していますhttp://wordpress.org/extend/plugins/cron-view/。このプラグインは私にこの "エントリー#10:my_task_hook√アクションが存在する"と言います。

何も起こっていない、ファイルが書き込まれていない、何が問題なのですか?

編集:私は、ファイルを書き込むための権限を持っているかどうかを確認するために、私はmyplugin関数の1行を追加した

。実際、私はパーミッションを持っています、data.txtファイルはwp-admin /フォルダに作成されています。

編集2:

私はちょうどワードプレスのcronジョブを理解する!

WordPressのCronは実際のcronではなく、ユーザーがWebページを開いたときにのみ起動します。誰もページを開かないと、プロセスは起動しません。したがって、ブログに訪問者がいない場合、cronジョブは動作しません。

私が間違っている場合は、私に修正してください。

答えて

0

data.txtが入っているフォルダに書き込むための書き込み権限がない可能性があります。書き込むフォルダを明示的に定義していないので、PHPファイルがあるフォルダに書き込みますin。

+0

私は質問を編集しました。私は正しいアクセス権を持っていると思います。 – dlopezgonzalez

0

1)right。あなたのディレクトリは書き込み可能です...

if (is_writable(dirname(__FILE__))){ 
    file_put_contents(dirname(__FILE__).'/data.txt', date("Y-m-d H:i:s") . "task do it\r\n", FILE_APPEND); 

} else { 
    mail('[email protected]', 'oops!', 'error writing'); 
} 

2)cron schelduleはどこで有効になっていますか?

add_action('activate_' . __FILE__, 'plugin_activate_demo'));  
add_action('deactivate_' .__FILE__, 'plugin_deactivate_demo')); 
function plugin_activate_demo(){ 
    wp_schedule_event(time(), 'tenmins', 'my_task_hook'); 
} 

function plugin_deactivate_demo(){ 
    wp_clear_scheduled_hook('my_task_hook'); 
} 

3、私は仕事に乗った)ほとんどIMPOSIBLE状況 - チェックはあなたのhook_actionコードにメールまたはそのような何かを追加することで、簡単なのcronを...働いていません。 http://yourservername.comが(wp-cronによって)要求されている間、DNS名の問題(多くのネットワークサーバーとURLルートの問題)のためにサーバー名が応答しません。

+0

あなたの答えをありがとう。私はファイルを書き込むための権限を持っているので、もし私がこの行を置くと、file_put_contents( 'data.txt'、date( "Y-m-d H:i:s") "Task begin \ r \ n"、FILE_APPEND); myplugin()関数で、私は自分のフォルダ内のdata.txtファイルを見ることができます。 – dlopezgonzalez

+0

フックワークを見て、証明してうれしいです。 ファイル書き込みのパースについては、ファイルへの絶対パスを指定する方が良いでしょう...上記の例と同じです - 'dirname(__ FILE __)。 '/ file.txt'' – Butuzov

関連する問題