创建一个功能,当销售只剩下5秒时,将检查所有代理商是否有此销售,并从尚未对此次销售获得许可的代理商发布最长的
这是需要持续运行的事情,因为这些代理商负责在发布许可证时替换用户,允许他们在拍卖期间离开。
更新(我的问题不够明确):
在销售的索引页面,我有一个带有javascript的脚本,用于计算销售剩余的时间,因此我可以知道销售何时应该调用该功能来检查代理商并出价,但我的新手问题是:如果我在这个页面上调用该函数,这只有在用户打开页面时才有效吗?或者,如果他关闭,该功能将不再被调用?因为即使用户关闭网页,我仍然需要这个。 DaMacc已经回答说这不起作用
更新(05/01/2010)
我已经创建了这个功能。该功能将查找剩下5秒钟的所有销售,然后它将搜索所有代理商,然后从未在所选销售中获得许可的代理商处出价最长。现在我需要每秒调用此函数。我打算使用 cron ,但 cron有1分钟的界限 。我需要此功能在服务器上运行,而不依赖于拥有代理的用户。
有什么建议吗?
PS:有一些拍卖网站有这种投标我正在尝试做的事情,我可以让一个人用作例子......但我不确定我是否允许这样做... 。:S感谢。
答案 0 :(得分:4)
创建您的正常函数来执行您需要执行的任何操作,然后使用类似cron
的内容将其设置为每X个时间运行一次的任务。
编辑以扩展评论
在这种情况下,您可能最好结合一些解决方案。正如this question中提到的,我建议您每分钟使用cron调用一个脚本,并在该脚本中循环运行您的进程。
需要考虑的一些事项:
在脚本开始时,记下当前时间,然后在每个循环开始时,检查自脚本启动后是否已经过了一分钟,如果有,则退出脚本(如另一个脚本将现在感谢cron)。
希望这会有所帮助。让我知道如果这没有多大意义,我会尝试清理一下。
答案 1 :(得分:2)
我想知道这是不是你要找的东西:
function execInBackground($cmd) {
if (substr(php_uname(), 0, 7) == "Windows") {
pclose(popen("start /B ". $cmd, "r"));
} else {
exec($cmd . " > /dev/null &");
}
}
然后,您可以使用以下方法在后台启动php进程:
execInBackground("php path/to/file.php " . $param01 . " " . $param02);
// where $param01 and $param02 are optional values that you may want to
// send to the page. Equivalent to GET parameters of URL.
// You can include as many parameter values as you want.
//Example:
execInBackground("php automation/bidChecker.php daniel 53.25");
// automation/bidChecker.php is the file to be executed
// daniel can be the username
// 53.25 can be the bid value
在后台运行的PHP文件中,您可以使用以下方法访问参数值:
$param01 = $argv[1]; // assigns daniel as value
$param02 = $argv[2]; // assigns 53.25 as value
当用户执行某些操作时,可以从脚本运行中启动此过程。即使用户离开页面,它也将继续运行,直到您以编程方式中断操作。
我真的不知道这是不是你要找的东西。如果是这样,你现在就明白了。
答案 2 :(得分:1)
使用队列,例如Zend_Queue:http://framework.zend.com/manual/en/zend.queue.html。只需运行无限循环(或两个)并分派从Web应用程序发送的消息
答案 3 :(得分:0)
您是否考虑过使用Javascript?如果您有某些事件触发了运行此检查的需要,那么可能就是这样。
您可以编写一个js函数,包含在每个使用setInterval/clearInterval
javascript函数的页面上,每隔几秒就向服务器发送一个AJAX请求,并根据条件是否可以向浏览器发送不同的响应是否满足。 (但带宽可能是一个问题)
我建议查看jQuery并使用它的AJAX函数。