在特定时间运行PHP脚本的最佳方式是什么?
我有一个网站,拍卖结束的时间不同。我需要在拍卖结束后向卖家和买家发送一封自动电子邮件,通知他们拍卖结束和结果。显然,我真的等不及有人加载页面来运行脚本了,那么有没有一种好方法可以通过检查当前时间并将其与拍卖结束的时间进行比较并运行脚本来实现自动化在特定时间运行PHP脚本的最佳方式是什么?,php,unix,cron,Php,Unix,Cron,我有一个网站,拍卖结束的时间不同。我需要在拍卖结束后向卖家和买家发送一封自动电子邮件,通知他们拍卖结束和结果。显然,我真的等不及有人加载页面来运行脚本了,那么有没有一种好方法可以通过检查当前时间并将其与拍卖结束的时间进行比较并运行脚本来实现自动化 该站点位于UNIX服务器上,因此可以选择cron作业,但我担心运行这样的cron作业会给服务器带来相当大的负载。cron作业最多每分钟运行一次 它在服务器上生成的负载实际上取决于要运行的脚本类型。顺便说一句,我假设您正在使用cli运行脚本(而不仅仅是执
该站点位于UNIX服务器上,因此可以选择cron作业,但我担心运行这样的cron作业会给服务器带来相当大的负载。cron作业最多每分钟运行一次 它在服务器上生成的负载实际上取决于要运行的脚本类型。顺便说一句,我假设您正在使用
cli
运行脚本(而不仅仅是执行curl)http://mysite.com
如果脚本花费的时间超过一分钟(您应该对此进行监控),只需执行以下任一操作:
- 增加两次运行之间的间隔时间,或
- 使用确保脚本的两个实例不能同时运行
if (($fp = fopen('/tmp/mylockfile', "r+")) === false) { die("Could not open lock file"); } if (!flock($fp, LOCK_EX | LOCK_NB)) { die("Could not obtain lock"); } // run your code here // release the lock and close file fclose($fp);
如果脚本需要每分钟运行一次以上,则需要完全不同的机制。cron作业最多每分钟运行一次 它在服务器上生成的任何负载实际上都取决于要运行的脚本的类型。顺便说一句,我假设您正在使用
cli
来运行脚本(而不仅仅是执行curl)http://mysite.com
如果脚本花费的时间超过一分钟(您应该对此进行监控),只需执行以下任一操作:
- 增加两次运行之间的间隔时间,或
- 使用确保脚本的两个实例不能同时运行
if (($fp = fopen('/tmp/mylockfile', "r+")) === false) { die("Could not open lock file"); } if (!flock($fp, LOCK_EX | LOCK_NB)) { die("Could not obtain lock"); } // run your code here // release the lock and close file fclose($fp);
o如果脚本需要每分钟运行一次以上,则需要完全不同的机制。使用Cron。它允许您每分钟最多运行一次命令: 就服务器负载而言,除非您经常在非常低端的服务器上运行大量的数据库调用,否则通常不会引起关注
如果您正在使用其他东西(除了PHP)来运行拍卖计时器机制,我建议您在计时器机制上附加一些代码,当计时器运行到零并确定赢家时,该计时器机制也会执行邮件发送脚本。使用Cron。它允许您每分钟最多运行一次命令: 就服务器负载而言,除非您经常在非常低端的服务器上运行大量的数据库调用,否则通常不会引起关注
如果您正在使用其他东西(除了PHP)要运行拍卖计时器机制,我建议您在计时器机制上附加一些代码,当计时器运行到零并确定胜利者时,该计时器机制也会执行邮件发送脚本。将PHP脚本作为命令行脚本运行。这不会在Web服务器上加载—只是在服务器上加载,您可以通过CRON轻松运行它 如果将
#!/usr/bin/php
添加到脚本顶部,并使用chmod+x scriptname.php
更改文件上的执行位,则可以直接执行脚本,而无需通过php
将PHP脚本作为命令行脚本运行。这不会在Web服务器上加载—只是在服务器上加载,您可以通过CRON轻松运行它 如果将
#!/usr/bin/php
添加到脚本顶部,并使用chmod+x scriptname.php
更改文件上的执行位,则可以直接执行脚本,而无需通过php
问:在特定时间或间隔运行PHP脚本的最佳方式是什么?
A:使用 问:cronjob会在服务器上造成很大的负载吗?
答:这取决于你的脚本。但检查是否应该关闭拍卖,关闭拍卖并发送两封电子邮件应该不会太困难。确保创建某种锁文件,以确保如果你的脚本运行时间超过设置的时间间隔,它不会运行两次 Q:以短于1分钟的时间间隔运行脚本
答:无法为您回答此问题。抱歉:)问:在特定时间或间隔运行PHP脚本的最佳方式是什么?
A:使用 问:cronjob会在服务器上造成很大的负载吗?
答:这取决于你的脚本。但检查是否应该关闭拍卖,关闭拍卖并发送两封电子邮件应该不会太困难。确保创建某种锁文件,以确保如果你的脚本运行时间超过设置的时间间隔,它不会运行两次 Q:以短于1分钟的时间间隔运行脚本
答:无法为您回答此问题。抱歉:)您需要做以下几件事: