我有一个处理订单的数据库 - 订单在流程开始时插入,但如果流程未完成(他们离开页面等),则“已确认”字段未填写,这允许管理员知道哪些订单已完成。
目前我没有调整网站管理数据的方式,但我可以添加某些每周清理这些数据库字段,其中“确认”= 0。
我将如何自动执行此操作?有没有办法每周,每月,每年运行这样的查询?
修改
如果我添加该网站存储在受限制的共享服务器上,我无法访问该框,该怎么办?
答案 0 :(得分:2)
您可以使用CRON执行此作业。但是如果你需要从未完成的订单清理你的数据库只显示为人类完成的数据库并且你不将它们导出到其他地方(例如每天经理访问后端一次并手动查找已完成的订单),我建议你不要雇用CRON为此。您可以添加几行代码,每次访问后端时都会从数据库中删除旧条目。
DELETE查询执行速度非常快,因此性能不会出现问题。仅根据请求执行实际数据删除。此外,您不需要CRON(一些廉价的托管服务提供商不提供访问此服务)。
答案 1 :(得分:0)
我通常创建一个执行操作的PHP页面,然后安排使用cURL和CRON作业运行。
答案 2 :(得分:0)
如果它是类似Unix的盒子,我会将清理放在PHP CLI脚本中(即从命令行而不是在Web服务器模块中运行的PHP脚本)并从cronjob调用它。 Cron是一个用于此目的的守护进程:以预定义的间隔运行。 Cronjobs在crontab文件中定义,通常在/etc/crontab
(对于root)和~/.crontab
(对于普通用户);许多发行版都提供了安全编辑此文件的工具。
请尝试man cron
和man crontab
了解详情。另外:http://en.wikipedia.org/wiki/Cron
答案 3 :(得分:0)
设置cron作业并执行wget
以运行要自动执行的脚本。请查看链接以获取更多信息http://www.phpmyvisites.us/faq/crontab-launch-automatically-statistics-archiving-process-every-62.html.
答案 4 :(得分:0)
编写一个简短的PHP脚本来更新/删除mysql记录,
然后,如果您有权访问linux / unix框,请键入crontab -e
,然后系统会提示您选择要查看当前cronjobs的编辑器,选择默认值并添加此项行:
0 0 * * 0 /usr/bin/php /path/to/script.php
请在设置之前检查/ usr / bin / php是否存在(您需要安装php-cli,如果它不存在,或者该文件可能也在/usr/sbin/php)。
这个cronjob每周运行一次,如果你想改变频率,可以使用联机帮助页来学习如何。
另外,您确定要自动运行此脚本吗?从我的理解,你需要有人先看到不完整的订单,然后才能清理它们。如果你运行这个cronjob,你可能会遇到某人没有完成他的订单但有任何证据被删除的情况。
希望这有帮助,