php可以在没有用户交互的情况下启动脚本以便与数据库进行交互吗?

时间:2012-03-07 13:37:09

标签: php database interaction

我在网上搜索,显然没有用户互动就无法启动php脚本。

很少有顾问向我推荐Cron,但我不确定这是否正确。

我正在建立一个可以像ebay一样进行拍卖的网站。经过一段时间后,物品不再可用,拍卖被视为已完成。

我想知道一种自动与数据库交互的方法。

5 个答案:

答案 0 :(得分:2)

您何时需要知道对象是否可用? - >只有有人问。

然后您就可以进行正在搜索的用户互动。

如果您想要发送电子邮件给拍卖的获胜者,那就不同了。在这种情况下,您需要将一些计时器设置为拍卖的结束时间。最简单的方法就是完成这项任务......

答案 1 :(得分:1)

有几种方法可以做到这一点。 Cron是有效的一个,如果有的话,我会推荐它。

另一种方法是在处理与对象相关的每个请求之前检查它是否仍然有效。如果不是,您可以在运行中从数据库中删除它(或做任何你需要的事情)并显示不同的页面。

您还可以在数据库中存储基于时间的脚本最后运行的时间,并将该时间与当前时间进行比较。如果延迟足够大,您可以运行基于时间的代码。但是,如果多个用户同时点击页面,这很容易出现竞争条件,因此脚本可能会运行多次(可能使用锁或其他任何东西都可以避免这种情况)。

答案 2 :(得分:1)

从shell编辑cronjobs:crontab -e

每10分钟运行一次的作业:*/10 * * * * curl "http://example.com/finished.php"

TheGeekStuff.com cron Examples

答案 3 :(得分:0)

使用heartbeat / bot工具 通货膨胀

答案 4 :(得分:0)

经常运行的Cron作业或者在启动时启动并连续运行的程序(可能是定期休眠)是可行的方法。使用cron作业,您需要确保在任何给定时间没有两个运行或写入它,以便在任何给定时间有多个工作并不重要。使用“常驻”程序时,您需要弄清楚如何在意外崩溃时处理案例。

但是,我不会依赖这种机制来实际关闭拍卖。这应该在您的数据库/网站上处理。也就是说,拍卖有一个关闭时间,数据库约束或您的代码使得无法在封闭式拍卖中出价。通知获胜者和卖家,设置付款流程等是您的服务/预定任务可以执行的操作。

相关问题