PHP 脚本在没有 CRON 的情况下每天运行几次?
嘿! 我正在寻找一些可以帮助我完成这样的任务的方法: 编写一个函数,每2天清除XML文件的内容。无需使用 CRON 或类似工具,仅使用 PHP 即可完成此操作。 到目前为止,我从未做过与时间相关的运行脚本,所以有没有办法只用 PHP 来制作它? 我假设函数所做的一切都是没有用户意会的,所以我尝试函数 sleep(),但我认为必须有更好的解决方案。 有人知道如何帮助我吗?
Hey!
i'm looking for some way that can help me in task like this:
write a function that every 2 days clear content of XML file. Do this with no CRON or similar tools, just PHP.
So far i've never done time-related-run script so is there a way to make it with only PHP?
I assume that everything what functions does is without users ingerention, so i try function sleep(), but i think there must be better solution.
Anyone know way to help me?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
根据每个请求检查文件的修改或创建日期。
如果当前时间减去文件时间大于 2 天 - 删除文件或清除内容。
这种情况下的请求是低分辨率时钟。一般来说,检查文件时间(stat)是相当快的操作。
On every request check modification or creation date of file.
If current time minus file time is greater than 2 days - delete file or clear content.
Request in this case is poor resolution clock. Generally checking file time (stat) is quite fast operation.
您可能想考虑将脚本作为守护进程运行。 PEAR 的 System_Daemon 类管理许多此类功能。您可以查看 http://kevin.vanzonneveld.net/techblog/article/create_daemons_in_php/ 有关如何设置守护进程的好教程。
Cron 显然更适合定时任务,但如果 cron 确实不可用,这可能是一个选择。
You might want to look into running your script as a daemon. PEAR's System_Daemon class manages a lot of this functionality. You can take a look at http://kevin.vanzonneveld.net/techblog/article/create_daemons_in_php/ for a good tutorial on how to set up a daemon.
Cron is obviously better for a timed task, but if cron really isn't available, this might be an option.
有些服务会在给定时间调用您的脚本。
在线 CRON 服务
There are services that call your scripts at given times.
ONLINE CRON SERVICES
如果没有 Cron 或让浏览器保持打开状态,我不确定这是否可行?
Without Cron or leaving your browser open, i'm not sure this is possible?
让脚本
sleep()
休息 2 天并不是一个好主意。使用 webcron。Letting the script
sleep()
for 2 days is no good idea. Use a webcron.当没有 cronjobs 的原因是您无法在服务器上定义 cronjobs 时,也许您可以在另一台(本地)计算机上调用一个脚本,该脚本每隔一天发出一次 HTTP 请求,从而触发您的 PHP 脚本?
When the reason for no cronjobs is, that you cannot define cronjobs on your server, maybe you can call a script on another (local) machine that makes a HTTP request every other day which fires your PHP script?
如果您的脚本执行速度很快,您可以使用“基于用户的 cron”。
-您将上次执行时间保存在某个地方
- 每个访问者都会触发对最后执行时间的检查
-如果执行时间超过定义的持续时间,则执行脚本
如果您的脚本不需要精确的执行时间并且执行速度非常快,这可能是一个很好的解决方案(触发执行的用户不应受到影响)
If your script is fast to execute you can use an "user based cron".
-You save somwhere the last execution time
-Each visitor trigger a check on the last execution time
-if the execution time exceed the defined duration the script is executed
It can be a good solution if your script don't need an exact execution timing and is very quick to execute (the user which trigger the execution should not be impacted)
这将每 2 天(或指定天数)为您运行一次脚本
http://www.phpjobscheduler.co.uk/
This will run your script for you every 2 days (or specify number of days)
http://www.phpjobscheduler.co.uk/
您可以使用 MySQL 数据库或文件来安排作业,如下所述 此处。
当 cron 作业不可用或未配置时,WordPress 也会使用相同的方法。
You can schedule the jobs using a MySQL database or a file as described here.
WordPress is also using the same method when cron jobs doesn't available or not been configured.