4

私はcron.phpwp-includesのコードを読んでいspawn_cron()て、実際に登録されたタスクを実行するもののようです。

関数の最後の2行:

$cron_url = site_url( 'wp-cron.php?doing_wp_cron=' . $doing_wp_cron );

wp_remote_post( $cron_url, array( 'timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters( 'https_local_ssl_verify', true ) ) );

クエリ引数としてタスクを渡すwp-cron.phpを開くだけです。

cron.phpの上部にあるAPIの説明:

* Schedules a hook which will be executed once by the WordPress actions core at 
* a time which you specify. The action will fire off when someone visits your
* WordPress site, if the schedule time has passed.`

私の質問は、訪問者がサイトのページの1つを開いた後、登録されたタスクがcronAPIによって起動されたとしましょう。また、タスクが重く、完了するまでに数分かかる場合、訪問者はタスクが完了するまで完全に読み込まれないページを取得しますか?

[編集]私が質問していることを明確にするために、質問は、ページの読み込みが完了した後にWP CronAPIがタスクを実行するかどうかです。

4

2 に答える 2

3
$cron_url = site_url( 'wp-cron.php?doing_wp_cron=' . $doing_wp_cron );
wp_remote_post( $cron_url, array( 'timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters( 'https_local_ssl_verify', true ) ) );

以下のサンプルプラグインを使用して、上記のコード(質問でも引用しました)が実際にスケジュールされたタスクを呼び出すコードであることを確認しました。0.0.1タイムアウトを設定し、wp-cron.phpにアクセスします。これは、100個のタスクがある場合、すべてのタスクをロードするのに1秒かかることを意味します。そのため、ページの読み込み速度にわずかな影響があります。でもあまり気にしないようです。

<?php
/* Plugin Name: Sample Cron Task */ 

    // I used `heavy` because this code was initially written to test how it affects the server response if a heavy task is registered as a cron job. So forget about the naming.
add_action('admin_menu', 'sample_cron_heavy_task');
function sample_cron_heavy_task() {
    add_options_page(
        'Sample Cron Heavy Task', 
        'Sample Cron Heavy Task', 
        'manage_options',
        'sample_cron_heavy_task', 
        'sample_cron_heavy_task_admin');
}
function sample_cron_heavy_task_admin() {
    ?>
    <div class="wrap">
    <?php
        wp_schedule_single_event(time(), 'my_action_name');
        $cron_url = site_url( 'wp-cron.php?doing_wp_cron=' . $doing_wp_cron );
        // executes the registered task immediately 
        wp_remote_post( $cron_url, array( 'timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters( 'https_local_ssl_verify', true ) ) );
        echo get_option('sample_cron_heavy_task');
    ?>
    </div>
    <?php
}

add_action('my_action_name', 'myevent'); 
function myevent() {
    $msg = date('Y m d h:i:s A') . ': the cron task is called.<br />';
    update_option('sample_cron_heavy_task', $msg);
}
于 2012-09-23T19:14:58.013 に答える
-1

cronジョブは、ビューアにまったく影響を与えないはずです。新しいホスティング会社が見つかった場合。

于 2012-09-13T02:18:59.637 に答える