หลังจากที่ Harvey Hardware Network เปลี่ยนมาใช้แพลตฟอร์มข่าวใหม่เมื่อสัปดาห์ที่แล้ว เนื่องจากความต้องการชั่วคราว แพลตฟอร์มข่าวดั้งเดิมจึงไม่ได้หยุดอย่างสมบูรณ์ ดังนั้น หลังจากที่เริ่มใช้แพลตฟอร์มใหม่ ก็พบว่าหน้าแรกของเว็บไซต์ It จะถูกอัปเดตเป็นเนื้อหาระบบดั้งเดิมอยู่เสมอ ในที่สุดก็ทำให้ไม่สามารถเข้าถึงลิงค์ข่าวบางรายการได้ตามปกติ ระบบใหม่ได้เพิ่มประสิทธิภาพ URL และ URL ของหน้าข่าวแตกต่างจากระบบเดิม ตอนแรกผมคิดว่าคงเป็นเพราะมีคนใช้ระบบเก่าอยู่ แต่สถานการณ์ยังเกิดขึ้นในวันรุ่งขึ้น เลยคิดว่าน่าจะเป็นปัญหากับระบบเก่า ต่อมาผมตรวจสอบแล้วพบว่าระบบ Empire CMS มีปัญหา เป็นงานเริ่มต้นในการรีเฟรชหน้าแรกจึงยกเลิกไป หลังจากนั้น หน้าแรกของเว็บไซต์ก็จะได้รับการอัปเดตตามปกติ
หลังจากแก้ไขปัญหานี้แล้ว ฉันเริ่มสนใจงาน PHP มาก่อน แต่ฉันไม่ได้ฝึกฝนเลย บางทีเมื่อพิจารณาถึงความสำคัญของฟังก์ชันนี้ต่อการพัฒนาระบบเว็บไซต์ ฉันจึงตัดสินใจศึกษามันตอนนี้และเขียนชุดของ รหัสครบกำหนดสำหรับการใช้งานในอนาคต
ประการแรกคือการค้นหาข้อมูลที่เกี่ยวข้องทางออนไลน์ โดยการอ่านข้อมูลนี้ ฉันรู้ว่างาน PHP สามารถแบ่งคร่าวๆ ได้เป็นสามประเภท
งานที่กำหนดเวลาไว้ของเซิร์ฟเวอร์
เซิร์ฟเวอร์ WIN สามารถใช้งานที่กำหนดเวลาไว้ได้โดยตรงเพื่อรันแอปพลิเคชันที่เกี่ยวข้อง และเซิร์ฟเวอร์ Linux สามารถใช้งานได้โดยเพิ่มงานที่กำหนดเวลาไว้ใน /etc/crontab
การดำเนินงานอัตโนมัติผ่านการวนซ้ำไม่สิ้นสุด
สร้างหน้าไฟล์โปรแกรม และใช้ign_user_abortเพื่อตั้งค่าให้สามารถเรียกทำงานได้หลังจากปิดหน้าเบราว์เซอร์ จากนั้น หลังจากรันหน้าโปรแกรม แผนงานที่คุณต้องการจะถูกดำเนินการโดยอัตโนมัติเสมอ สำหรับโปรแกรมเมอร์ PHP ทั่วไป หากพวกเขาไม่มั่นใจเพียงพอ การดำเนินการนี้จะไม่ได้รับอนุญาต เนื่องจากการวนซ้ำแบบไม่มีที่สิ้นสุดอาจทำให้เซิร์ฟเวอร์เสียหายได้ง่าย
ทริกเกอร์งานที่กำหนดเวลาไว้
ในบรรดาโปรแกรมต่างๆ ที่ฉันรู้จัก เช่น Discuz, Empire CMS ฯลฯ พวกเขาทั้งหมดใช้วิธีนี้เพื่อทำงานตามกำหนดเวลาของระบบให้เสร็จสิ้น เมื่อเทียบกับสองวิธีก่อนหน้านี้ นี่เป็นวิธีที่ปลอดภัยที่สุดและง่ายที่สุด
มีตัวเลือกมากมาย ดังนั้นเมื่อออกแบบโปรแกรม คุณควรเลือกวิธีที่เหมาะสมที่สุดในการเขียนโปรแกรมตามความต้องการที่แท้จริง เรามาแนะนำโดยใช้ตัวอย่างกันดีกว่า
นิตยสารอิเล็กทรอนิกส์ของ AiLiterature.com ถูกจัดทำขึ้นไม่นานหลังจากที่เว็บไซต์เปิดตัว นี่เป็นนิตยสารอิเล็กทรอนิกส์ที่จัดส่งผ่านทางอีเมล การส่งนิตยสารอิเล็กทรอนิกส์ฉบับล่าสุดไปยังกล่องจดหมายของสมาชิกถือเป็นงานใหญ่ เห็นได้ชัดว่าการส่งไม่ทำงาน สาเหตุหลักคือปัจจุบันไม่มีเมลเซิร์ฟเวอร์ของตัวเอง เช่น กล่องเมลที่ News, Tencent และ 163 มอบให้ แม้ว่าจะรองรับ SMTP ในการส่งอีเมล แต่ก็ไม่อนุญาตให้ส่งอีเมลจำนวนมาก โดยมีเงื่อนไขที่จำกัด ดังนั้นจึงสามารถแก้ไขได้ด้วยโปรแกรมเท่านั้น
ก่อนอื่น ฉันเลือกงานที่กำหนดเวลาไว้เพื่อป้องกันไม่ให้โปรแกรมที่ส่งอีเมลส่งผลกระทบต่อประสบการณ์ของผู้ใช้ในการเยี่ยมชมเว็บไซต์ ซึ่งส่วนใหญ่เป็นความเร็วในการเปิดหน้าเว็บไซต์ ฉันจึงเลือกใช้ Ajax เพื่อใช้งานทริกเกอร์ เพิ่มฟังก์ชันทริกเกอร์ให้กับไฟล์ JS สาธารณะ และผู้ใช้สามารถทริกเกอร์งานส่งอีเมลได้เมื่อไปที่หน้าใดก็ได้
เพื่อจำกัดความถี่ในการส่งอีเมลและป้องกันไม่ให้เมลเซิร์ฟเวอร์ถูกแบนเนื่องจากการส่งอีเมลบ่อยเกินไป จึงมีการกำหนดเวลาในโปรแกรมด้วย การส่งอีเมลไม่ใช่ช่วงเวลาที่คงที่ จริงๆ แล้วช่วงเวลาในโหมดทริกเกอร์คือ เวลาเป็นสิ่งที่ไม่แน่นอน แต่เมื่อเว็บไซต์มีการเข้าชมจำนวนมาก ปัญหาดังกล่าวก็อาจยังคงเกิดขึ้นได้ ดังนั้น การเพิ่มการตั้งค่าในส่วนนี้จึงปลอดภัยกว่า คำนึงถึง.
แม้จะมีมาตรการข้างต้น แต่ในการใช้งานจริงยังพบว่าเมลเซิร์ฟเวอร์จะถูกห้ามไม่ให้ส่งอีเมล แต่ก็ไม่ได้ถูกห้ามอย่างถาวร วิธีแก้ไขปัญหานี้คือการสร้างอาร์เรย์เพื่อบันทึกพารามิเตอร์ SMTP ของบริการเมลต่างๆ เมื่อเมลเซิร์ฟเวอร์เครื่องหนึ่งไม่สามารถส่งเมลได้ตามปกติ ระบบจะข้ามไปยังเมลเซิร์ฟเวอร์อื่นโดยอัตโนมัติ
ในรายการที่อยู่อีเมลที่รวบรวมไว้ จะมีที่อยู่ที่ไม่ถูกต้องบางส่วนในระหว่างขั้นตอนการส่งอีเมล หากการส่งล้มเหลวเพียงครั้งเดียว ให้สลับไปยังเซิร์ฟเวอร์อีเมลอื่นและส่งอีกครั้ง หากไม่สำเร็จ ให้ตั้งค่าที่อยู่อีเมลนี้เป็นหากไม่ถูกต้อง จะไม่มีการส่งอีเมลไปยังที่อยู่นี้อีกในอนาคต จึงช่วยปรับปรุงประสิทธิภาพของรายการที่อยู่อีเมลและประหยัดเวลาในการส่งอีเมลในครั้งต่อไป
เพื่อนบางคนบอกว่าฉันตระหนี่เกินไปและแบ่งปันโค้ดน้อยเกินไปในบล็อกประเภทนี้ จริงๆ แล้วเมื่อเราค้นหาข้อมูลบนอินเทอร์เน็ตเราจะพบว่าโค้ดที่หลาย ๆ เว็บไซต์แชร์นั้นไม่จำเป็นและบางครั้งเราก็ ล่าช้าเนื่องจากการอ้างอิงถึงรหัสเหล่านี้ เป็นเวลานาน ดังนั้นเมื่อสรุปฉันมักจะสรุปวิธีการแก้ปัญหาและจดพารามิเตอร์ทางเทคนิคที่สำคัญเพื่อให้ฉันสามารถมีข้อมูลอ้างอิงเมื่อพบปัญหาที่คล้ายกันในอนาคต หากคุณมีคำถามใด ๆ ในเรื่องนี้ คุณสามารถติดต่อฉันได้ทางข้อความหรืออีเมล
พื้นที่ส่วนตัวของผู้เขียน Happy Boy