自动数据库每秒读/写

时间:2009-11-10 09:56:02

标签: php mysql centos cron plesk

我正在制作一个有自动出价系统的拍卖网站。该系统允许人们在不必在场的情况下进行投标。

我的问题是如何实施这样一个系统。我已经制作了php文件,一切准备就绪,我已经创建了一个每秒都刷新的html页面。它有效,但我想知道是否有更好的解决方案。

我尝试的第二个选项是创建一个每隔一秒打开网页的java应用程序。这消耗了“很多”内存/ CPU。另外,我认为某处存在内存泄漏。

我在带有centOS和Plesk的专用linux服务器上运行此应用程序,所以我确信有很多替代方案。

例如:

  1. 每分钟执行一次php文件的cronjob,其中php文件在睡眠时循环一分钟。

  2. 一个循环播放1秒的php文件。

  3. 一个cronjob在一秒钟后执行并安排另一个cronjob。

  4. MySQL调度程序,但我不知道如何实现它,我听说它会锁定数据库用于其他写入。

  5. 我也听说过cli,perl,python脚本,但我对它们中的任何一个都不熟悉。

  6. 请有任何了解这些选项的人请就此问题为我提供一些启示。我正在寻找最适合速度和内存使用的解决方案。

    如果有人有其他替代解决方案,我也很高兴听到这个。

4 个答案:

答案 0 :(得分:2)

创建一个以给定时间间隔执行相关PHP脚本的cron作业。如果以与上下文无关的方式编写(不需要访问$_GET$_POST等),您可以execute the PHP script from the command line

答案 1 :(得分:2)

每一秒都是如此小的间隔,cronjobs不是一个选项,我强烈建议不要使用“网页”,因为性能很重要只是为CLI编写的脚本才会这样做。

我要做的是:

  • 当有人激活自动出价时 你应该在一个注册 数据库中。
  • 创建一个守护进程的守护进程 要执行的条目的数据库 那一刻。

无论如何,您需要非常小心让每个周期后脚本都处于睡眠状态,否则您将关闭数据库。

另一方面,您真的需要每秒执行一次吗?在我看来,自动出价是由事件触发的,即有人在剩下10秒时出价超过你。这听起来好多了,而且资源密集程度更低(你也可以在那里使用守护进程,监听自动出价事件,但这是另一个故事:)

答案 2 :(得分:1)

好吧,您可以尝试某种“基于事件的发布”,这基本上意味着一旦将数据插入数据库,就会触发某些事情发生。

例如,MySQL触发甚至是一个简单的PHP脚本,即ON INSERT以获得新的出价,您可以检查是否有其他人的最高出价高于该出价。
如果他们这样做,则更新新的最高出价和当前最高出价者。

如果有多个竞价者,您可能需要进行循环,看看谁将获得最高出价。

关键是你不应该真正跑来跑去做预定的工作来解决这个商业问题。我建议你使用触发器或事件。

答案 3 :(得分:0)

如果您已有一个执行该作业的页面,则可以安排每分钟调用curl命令的cron(curl http://your/page.php)。唯一需要注意的是,如果从外面调用它,你可能需要保护你的页面,如果这是一个问题。