我想问一下,如何在一段时间后一次又一次地使用php函数,就像Javascript中的setInterval一样。我们设定时间,直到脚本中止或关闭为止。
的index.php
<?
$Wall = new Wall_Updates();
$updatesarray=$Wall->Updates();
foreach($updatesarray as $data)
{
$likes=$data['likes'];
?>
<div id="likes"><?php echo $likes; ?></div>
<?
}
?>
Wall_Updates()函数在 FUNCTION.PHP
中定义<?php
class Wall_Updates {
public function Updates() {
$myname=$_COOKIE['usename'];
$query=mysql_query("SELECT * FROM posts WHERE name='$myname'");
while($row=mysql_fetch_array($query))
$data[]=$row;
return $data;
}
}
?>
我希望这个Wall_Updates()函数一次又一次地从mysql中获取数据。所以,它会被更新。
答案 0 :(得分:22)
记录:我认为这是个坏主意。但无论如何:))
试试此代码
function setInterval($f, $milliseconds)
{
$seconds=(int)$milliseconds/1000;
while(true)
{
$f();
sleep($seconds);
}
}
用法:
setInterval(function(){
echo "hi!\n";
}, 1000);
或者:
$a=1;
$b=2;
setInterval(function() use($a, $b) {
echo 'a='.$a.'; $b='.$b."\n";
}, 1000);
答案 1 :(得分:6)
我建议使用setInterval使用AJAx从.php页面轮询结果,然后输出结果。
所以使用jQuery会看起来像这样:
<script>
var poll = true;
var getData = function() {
if (poll) {
$.get('getData.php', function(data) { $('#likes').html(data); });
}
};
$(document).ready(function() {
setInterval(getData, 5000);
$('.comm').click(function() { poll = false; });
$('.comm').blur(function() { poll = true; });
});
</script>
答案 2 :(得分:3)
您的解决方案非常简单:
$event = new EVTimer(10,2, function() {
Do your things .. :)
});
答案 3 :(得分:0)
JavaScript在其他线程中执行setInterval
以继续其代码流执行。但是php挂在您调用由for循环实现的函数的行上。
但是php支持多线程和分叉工具,但不建议使用它们,并且还没有线程安全性。
答案 4 :(得分:0)
我将保证您使用cron作业在代码中实现此类功能。 Cron将根据您提供的说明在后台运行。查看this article
答案 5 :(得分:0)
由于Web开发的异步概念与在不重新加载页面的情况下完成网页更改有关,因此,当我们在网页上需要这种效果时,我们一定不能总是奔向Ajax的困境。做一些工作,进入数据库@ sleep seconds,以获取一些数据集供我们使用,尤其是用于聊天应用程序。请参见以下代码:
function setInterval ( $func, $seconds )
{
$seconds = (int)$seconds;
$_func = $func;
while ( true )
{
$_func;
sleep($seconds);
}
}
现在,假设我们有一个函数get_msg()进入数据库以下载一些信息,如果我们必须重复执行该操作而不重复使用按钮调用,那么请参见setInterval函数的用法上面带有get_msg函数。
setInterval ( get_msg(), 5 );
答案 6 :(得分:-1)
目前尚不清楚您想要达到的目标。
您是否知道PHP仅根据请求提供内容?
如果您希望服务器偶尔更新一次(例如文件),请使用cronjob(在* nix上)。
如果您希望WEBPAGE重新查询某些内容,请在javascript中执行此操作并调用提供新内容的PHP脚本。
答案 7 :(得分:-1)
与Javascript不同,PHP在服务器端执行。 PHP中没有setTimeout功能。你可以通过使用cronjobs或其他PHP脚本来调试你的脚本。