0

I've search on the web and apparently there is no way to launch a php script without user interaction.

Few advisors recommend me Cron but I am not sure this is the right way to go.

I am building a website where auctions are possible just like ebay. And after an amount of time the objects are not available anymore and the auction is considered as finished.

I would like to know a way to interact with the database automatically.

4

5 回答 5

2

什么时候需要知道对象是否可用?-> 只有当有人问。

然后你就有了你正在搜索的用户交互。

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

于 2012-03-07T13:39:38.040 回答
1

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

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

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

于 2012-03-07T13:41:33.610 回答
1

要从 shell 编辑 cronjobs:crontab -e

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

TheGeekStuff.com cron 示例

于 2012-03-07T13:43:49.527 回答
0

经常运行的 Cron 作业或在启动时启动并连续运行(可能定期休眠)的程序是要走的路。对于 cron 作业,您需要确保在任何给定时间都没有两个在运行,或者编写它以便在任何给定时间有多个工作都没有关系。使用“驻留”程序,您需要弄清楚当它意外崩溃时如何处理这种情况。

不过,我不会依靠这种机制来真正结束拍卖。这应该在您的数据库/网站中处理。也就是说,拍卖有一个关闭时间,并且数据库限制或您的代码使得无法在封闭式拍卖中出价。通知获胜者和卖家、设置付款流程等是您的服务/计划任务可以做的事情。

于 2012-03-07T13:47:11.063 回答
0

使用心跳/机器人实现

于 2012-03-07T13:44:18.257 回答