ฉันจะหยุดภารกิจ cron ไม่ให้ถูกเรียกโดยผู้เยี่ยมชมไซต์ได้อย่างไร


12

บันทึกของเว็บไซต์ของฉันแสดงว่า cron ถูกเรียกใช้หากมีผู้เยี่ยมชมเว็บไซต์ นี่เป็นการชะลอความเร็วในการโหลดสำหรับการเข้าชมครั้งแรก

cron การกำหนดค่าการทำงานในแต่ละ 3 ชั่วโมงที่นี่: »การดูแลการตั้งค่าคอนฟิก»ระบบ» Cron

ฉันจะเรียกใช้ cron ที่กำหนดเวลาไว้และไม่เรียกใช้โดยผู้เข้าชมได้อย่างไร

คำตอบ:


9

คุณควรเริ่มต้นด้วยการอ่านหน้าคู่มือ Drupal เกี่ยวกับ cronเพื่อให้ได้พื้นหลังและคำสั่งให้ทำงาน

  • หากคุณมีการเข้าถึง shell / SSH ไปยังเซิร์ฟเวอร์ (Linux) คุณสามารถเรียกใช้ use crontab -u www-data -eเพื่อแก้ไขตาราง cron สำหรับผู้ใช้เว็บ คุณควรจะสามารถใช้รายละเอียดในลิงค์ด้านบนเพื่อตั้งค่า cron ที่เหมาะสมทำงานบ่อยเท่าที่คุณต้องการ
  • หากคุณใช้โฮสติ้งที่ใช้ร่วมกันโดยไม่มีการเข้าถึงเชลล์คุณจะต้องใช้แผงควบคุมของโฮสต์เว็บ (CPanel, Plesk ฯลฯ ) เพื่อเข้าสู่ระบบและเพิ่ม 'ภารกิจที่กำหนดเวลาไว้' นี่เป็นเว็บอินเตอร์เฟสไปยังแท็บ cron ดังนั้นจำเป็นต้องมีการตั้งค่าเดียวกัน
  • หากสิ่งเหล่านี้ไม่พร้อมใช้งานคุณจะต้องขอความช่วยเหลือจาก บริษัท โฮสติ้งของคุณ แต่ยังมีบริการฟรีและชำระเงินที่คุณสามารถใช้โทรหาcron.phpเพจจากระยะไกลได้ ดูชุด Cron งานตัวอย่างเช่น

ลองดูคล้ายกับโมดูล Elysia Cronถ้าคุณต้องการ cron มากกว่าปกติ - มีเอกสารที่ดีและช่วยให้คุณสามารถควบคุมงานที่ต้องทำงานอย่างละเอียด

สุดท้ายอย่าลืมปิดการใช้งานเว็บไซต์เมื่อผู้เยี่ยมชมมาถึงการบริหาร»การกำหนดค่า»ระบบ» Cronเมื่อคุณจัดการเพื่อตั้งค่านี้


ฉันมีสิทธิ์เข้าถึงเชลล์ ฉันรู้วิธีตั้งค่างาน cron ดังนั้นฉันจะคิดออก แต่ขอขอบคุณที่สรุปข้อมูลทั้งหมด
cateye

แต่สิ่งที่ฉันไม่เข้าใจก็คือทำไม Drupal ถึงทำงานเหมือนตอนนี้ หากการกำหนดค่าพื้นฐานมีกำหนดให้เรียกใช้ cron ทุก 3 ชั่วโมงเหตุใดจึงต้องรอผู้เยี่ยมชม
cateye

1
คิดเกี่ยวกับมัน มีหลักสูตรนอกสำหรับ Drupal ไม่มีวิธีในการทำงาน cron โดยไม่ต้อง bootstrapping และ bootstrapping เกิดขึ้นเมื่อผู้เยี่ยมชมเว็บไซต์ ดังนั้นสรุปคือ: ถ้าคุณต้องการงาน cron จริง ๆ คุณต้องตั้งค่าฝั่งเซิร์ฟเวอร์
cateye

2
เผง ไม่มีอะไรเกิดขึ้นบนเซิร์ฟเวอร์หากไม่มีใครหรืออะไรกำลังทำงานอยู่ ค่าเริ่มต้นของ Drupal 7 คือเรียกใช้ cron เมื่อผู้ใช้มาถึงเป็นครั้งคราวเพื่อให้มั่นใจว่างานสำคัญจะได้รับการรัน Drupal 6 อาศัยโมดูล Cron ของ Poor Man เพื่อทำสิ่งนี้ในกรณีที่ไม่มีงาน cron ที่เหมาะสม ... และเกือบทุกอย่างใน Drupal ต้องการ bootstrap เกิดขึ้นก่อน งาน cron ที่เหมาะสมบนเซิร์ฟเวอร์แน่นอนตัวเลือกที่ดีที่สุด
Jim Kirkpatrick

1
คำตอบด้านล่างอธิบายถึงวิธีการที่จะแก้ไขได้ ไม่ใช่ตัวนี้ :(
Tomáš Fejfar

13

Drupal 7 รวมอยู่ในโมดูลโค้ดที่อยู่ในPoormanscronซึ่งมีจุดประสงค์เพื่อเรียกใช้งาน Drupal cron บนไซต์ที่ไม่สามารถกำหนดภารกิจ cron ได้เมื่อผู้ใช้เยี่ยมชมไซต์ของคุณและทุก ๆ X ชั่วโมง (ตามที่กำหนดไว้ใน หน้าที่คุณเห็น)

หากคุณต้องการหลีกเลี่ยงพฤติกรรมดังกล่าวคุณเพียงแค่ตั้ง "Run cron every" เป็น "Never"; ตรงกันข้ามกับสิ่งที่ดูเหมือนว่าจะมีผลต่อสิ่งที่เกิดขึ้นเมื่อผู้ใช้เยี่ยมชมเว็บไซต์ของคุณ [1]คุณยังสามารถเรียกใช้งาน Drupal cron จากนอก Drupal ได้โดยจำได้ว่าต้องเรียกใช้งาน Drupal 7 cron.php จากนอก Drupal ผ่านค่าที่แสดงใน "การจัดการ> รายงาน> รายงานสถานะ"

 

ภาพหน้าจอ

 

 

 

 

 

[1]:อันที่จริงไม่ใช่cron.phpหรือdrupal_cron_run ()ตรวจสอบตัวแปร Drupal ที่ใช้ในหน้าการตั้งค่านั้น ตัวแปร Drupal เดียวที่ใช้คือ:

  • "cron_key" ที่มีคีย์ cron ที่ใช้เพื่อหลีกเลี่ยงงาน Drupal cron จะถูกเรียกใช้จากผู้ใช้ที่ไม่ได้รับอนุญาต
  • "maintenance_mode" ที่ตั้งค่าไว้TRUEเมื่อไซต์อยู่ในโหมดบำรุงรักษา
  • "cron_last" ที่มีการประทับเวลาเมื่องาน cron ถูกเรียกใช้ครั้งล่าสุด

ปัญหาเดียวคือเมื่องาน cron หมดเวลาทุกครั้งที่คุณดูหน้านี้และคุณไม่สามารถเข้าสู่ระบบในฐานะผู้ดูแลระบบเพื่อปิดการใช้งาน! ถอนหายใจ ... ฉันจะคิดออก แต่ก็ดีที่จะรู้ว่ามันสามารถใช้งานได้เมื่อฉันเข้าที่นั่น

ใช่ฉันแก้ไขได้อย่างรวดเร็วโดยการตั้งค่าการตรวจสอบสถานะ Montastic ว่า "ตรวจสอบ" URL การเปิดใช้งาน cron ทุก 6 ชั่วโมง ...
Anders
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.