ฉันมีบล็อกโค้ด PHP ที่สร้างไฟล์ sitemap.xml ของฉัน ปัญหาคือมันสร้างไฟล์ทุกครั้งที่โหลดหน้าเว็บไซต์ รหัสอยู่ในไฟล์เทมเพลตหลักของฉัน
ฉันจะบอกให้ PHP รันโค้ดนี้เพียงวันละครั้ง แทนที่จะโหลดเทมเพลตทุกครั้งที่โหลดได้อย่างไร
ฉันไม่ต้องการใช้แท็บ cron เพราะโค้ดต้องอยู่ในไฟล์เทมเพลต ไฟล์เทมเพลตถูกดึงมาจากหลายโดเมนในบัญชีเดียวกัน ดังนั้นฉันจึงต้องใส่เงื่อนไขในบล็อกของโค้ดที่ระบุว่า only run this code when a page is loaded but only during a certain time frame each day, like from 12 noon to 4pm or something like that
ฉันรู้ว่านั่นคือสิ่งที่ cron มีไว้ แต่จำเป็นต้องทำใน PHP
อัปเดต
นี่คือสิ่งที่ฉันคิดขึ้นมาจากคำตอบ Travesty3
$time = time();
$sitemap = $_SERVER['DOCUMENT_ROOT'].'/sitemap.xml';
if ($time - filemtime($sitemap) >= 1*24*60*60) { // 1 days
(generate sitemap code here)
}
มันใช้งานได้ดี ขณะนี้แผนผังไซต์ถูกสร้างขึ้นเพียงวันละครั้งเท่านั้นหากไซต์มีผู้เยี่ยมชมอย่างน้อย 1 ต่อวัน
แต่หากไซต์มีปริมาณการเข้าชมจำนวนมาก ซึ่งเป็นข้อกังวลเดิมของฉันในการทำเช่นนี้ตั้งแต่แรก จะไม่ตรวจสอบ filemtime
ของไฟล์ sitemap.xml ทำให้มีค่าใช้จ่ายบนเซิร์ฟเวอร์เกือบเท่ากันกับการสร้างไฟล์แผนผังไซต์บน แต่ละคำขอ?