วิธีทดสอบ wp_cron


28

นี่เป็นคำถามที่โง่ ...

ฉันกำหนดการกระทำที่จะทำงานทุกชั่วโมง:

if(!wp_next_scheduled('my_hourly_events'))
  wp_schedule_event(time(), 'hourly', 'my_hourly_events');

add_action('my_hourly_events', 'the_function_to_run');

function the_function_to_run(){
   echo 'it works!'; 
}

ฉันจะทดสอบได้อย่างไรว่าทำงานได้โดยไม่รอชั่วโมง :)

ฉันลองเพิ่มwp_clear_scheduled_hook('my_hourly_events');ก่อนรหัสนี้และเพิ่มwp_cron()หลังจาก แต่ฉันไม่เห็นว่าฟังก์ชั่นของฉันทำงานอยู่ ...

แก้ไข:

ตกลงฉันเพิ่มtrigger_error()ฟังก์ชั่นของฉันตรวจสอบบันทึกข้อผิดพลาด apache และมันมี :)

ดังนั้นตอนนี้ฉันยิ่งสับสน:

  • wp-cron สามารถทำงานในพื้นหลังได้อย่างไร? เพราะเห็นได้ชัดว่าเป็นสิ่งที่เกิดขึ้นถ้าฉันไม่เห็นผลลัพธ์ ...

  • สิ่งนี้ดูเหมือนจะไม่ทำงานในบริบทของวัตถุ ทำไม?


ตกลงผมพบงาน wp-cron.php wp_remote_post()จะถูกดำเนินการด้วย ที่อธิบายทุกอย่าง ...
onetrickpony

โดย "บริบทบริบท" คุณหมายถึงการติดต่อกลับของคุณเป็นarray( &$this, 'my_method_name' )อย่างไร ที่จะไม่ทำงานแน่นอนเพราะชื่อฟังก์ชั่นจะถูกเก็บไว้ในฐานข้อมูลที่จะดำเนินการในภายหลัง &$thisอ้างถึงวัตถุเฉพาะไม่ใช่ชื่อคลาสและวัตถุนี้จะไม่มีอยู่ในคำขอถัดไปเมื่อมีการเรียกใช้งาน cron ฟังก์ชั่นระดับคงที่ควรทำงาน
Jan Fabry

ใช่ฉันต้องทำให้ฟังก์ชั่นของฉันคงที่ ฉันไม่คิดว่า wp จะเรียกใช้สคริปต์ท้องถิ่นแบบระยะไกลในชื่อ "cron"
onetrickpony

คำตอบ:


20

ปลั๊กอินที่ฉันชอบคือCore Controlซึ่งมีโมดูลที่ดีมากสำหรับการแสดงสิ่งที่กำลังเกิดขึ้นใน cron - กิจกรรมใดที่มีการตั้งค่าเมื่อมีการยิงครั้งต่อไป ฯลฯ

เมื่อได้รับในระดับมือของคุณดูสกปรก_get_cron_array()ซึ่งจะส่งกลับข้อมูลที่เก็บไว้ภายในสำหรับเหตุการณ์ cron (ระดับสูงสุดของปุ่มคือการประทับเวลา)


HTTP Access Logger บันทึกคำขอทั้งหมดหรือเฉพาะรายการที่ทำด้วย API API ของ WP นี่เป็นสิ่งที่ยอดเยี่ยมสำหรับการค้นหาปลั๊กอินที่ต้องทำและสาเหตุที่หน้าของคุณโหลดช้า :)
onetrickpony

@One กลม้าไม่แน่ใจ แต่มันจะทำให้ความรู้สึกที่จะถือว่าเป็นของ API เท่านั้น
Rarst
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.