Timed events with php/MySQL

谁说我不能喝 提交于 2020-01-03 17:54:59

问题


I need a way to modify a value in a table after a certain amount of time has passed. My current method is as follow:

  • insert end time for wait period in table
  • when a user loads a page requesting the value to be changed, check to see if current >= end time
  • if it is, change the value and remove the end time field, if it isn't, do nothing

This is going to be a major feature on the site, and so efficiency is the key; with that in mind, you can probably see the problem with how I'm doing it. That same chunk of code is going to be called every time someone access a page that needs the information.

Any suggestions for improvements or better methods would be greatly appreciated, preferably in php or perl.

In response to cron job answers: Thanks, and I'd like to do something like that if possible, but hosts limits are the problem. Since this is a major part of the app, it can't be limited.


回答1:


why not use a cron to update this information behind the scenes? that way you offload the checks on each page hit, and can actually schedule the timing to meet your app's requirements.




回答2:


Your solution sounds very logical, since you don't have access to cron. Another way could be storing the value in a file, and the next time the page is loaded check when it was last modified (filemtime("checkfile.txt")), and decide if it needs modifying again. You should test performance for both methods.




回答3:


Can you use a cron job to check each field in the database periodically and update that way?

A big part of this is how frequently the updates are required. A lot of shared hosts limit the frequency of cron checks, for example no more than every 15 minutes, which could affect the application.




回答4:


You could use a trigger of some sort on each page load. I really have no idea how that would affect performance but maybe somebody else can shed some light.




回答5:


If performance really starts to be an issue, (which means a lot more than you probably realize) you could use memchached to store the info...



来源:https://stackoverflow.com/questions/122954/timed-events-with-php-mysql

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!