จะตั้งค่า crontab โดยใช้ php ได้อย่างไร?

ฉันต้องตั้งค่า crontab จากสคริปต์ php ฉันรู้ว่ามันสามารถตั้งค่าได้โดย

system("echo '* * * * * echo \"Hello world\"' >> cron.crontab"); system("crontab cron.crontab"); //cron.crontab is the file name of the crontab

ไฟล์ "cron.crontab" ถูกสร้างขึ้นในไดเรกทอรีราก แต่ crontab ไม่ทำงานตามที่คาดไว้! เมื่อฉันลองคำสั่งต่อไปนี้ มันบอกว่าไม่มีการตั้งค่า crontab!

crontab -l

ฉันคิดว่าฉันขาดอะไรบางอย่างไป ฉันใช้เฟรมเวิร์ก yii มีส่วนขยายสำหรับจัดการ cron ในกรอบงาน yii หรือไม่? มีวิธีอื่นอีกไหมที่จะทำมัน? โปรดช่วยฉันด้วย ขอบคุณ.


person brainless    schedule 19.02.2011    source แหล่งที่มา
comment
เป็นไปได้ที่ซ้ำกันของ ใช้ PHP เพื่อสร้าง แก้ไข และลบงาน crontab หรือไม่   -  person Sebastian Paaske Tørholm    schedule 19.02.2011
comment
ไม่ซ้ำกันเลยทีเดียว คำถามเกี่ยวข้องกับโค้ดจากคำตอบที่ยอมรับซึ่งดูเหมือนว่าจะใช้งานไม่ได้   -  person cHao    schedule 19.02.2011
comment
คำถามมีความแตกต่างกันเล็กน้อย แต่คำตอบสำหรับคำถามนี้คือประโยคสุดท้ายของคำตอบที่ยอมรับในคำตอบที่เชื่อมโยง   -  person Bertrand Marron    schedule 19.02.2011


คำตอบ (3)


คุณใช้งาน crontab -l ในฐานะผู้ใช้รายเดียวกับเว็บเซิร์ฟเวอร์ที่ทำงานอยู่หรือไม่ มิฉะนั้นคุณจะไม่เห็น cronjobs ของมัน

person troelskn    schedule 19.02.2011

โดยทั่วไปแล้ว Apache จะไม่สามารถยุ่งกับ crontab หลักได้ อย่างไรก็ตาม ผู้ใช้แต่ละคนก็มี crontab เช่นกัน และมีแนวโน้มว่าโค้ดของคุณด้านบนจะตั้งค่า crontab ของ apache (หรือ crontab สำหรับผู้ใช้ใดก็ตามที่ไซต์ของคุณทำงาน)

ลอง crontab -u apache -l หรือแทนที่ apache ด้วยผู้ใช้ใดก็ตามที่เว็บไซต์ของคุณใช้งาน และดูว่ามีรายการที่คุณตั้งไว้หรือไม่

person cHao    schedule 19.02.2011

โดยทั่วไปคุณจะต้องรูทเพื่อตั้งค่า crontab และมันไม่เหมือนกับที่ php รันเป็นรูท ซึ่งในกรณีนี้คุณจะโชคไม่ดี

แก้ไข: โชคไม่ดีเลย ดูลิงก์ในความคิดเห็นของเซบาสเตียนด้านบน

person awm    schedule 19.02.2011
comment
PHP ทำงานในฐานะผู้ใช้บนเซิร์ฟเวอร์...และในฐานะผู้ใช้ PHP อาจมี crontab ที่สามารถตั้งค่าเองได้ แต่งานเหล่านั้นจะทำงานในฐานะผู้ใช้เว็บไซต์/เซิร์ฟเวอร์ ซึ่งอาจหรืออาจไม่มีสิทธิ์เข้าถึงเพียงพอที่จะทำงานให้สำเร็จได้ - person cHao; 19.02.2011
comment
ถูกต้องครับคุณ. ขอขอบคุณสำหรับการชี้แจง. - person awm; 19.02.2011