Ran*_*ell 21
PHP是一种服务器端脚本语言. 如果您需要检查客户端是否已加载某些内容,则需要使用JavaScript等客户端脚本语言.
您可能需要使用jQuery来简化操作.
jQuery是一个快速而简洁的JavaScript库,它简化了HTML文档遍历,事件处理,动画和Ajax交互,以实现快速Web开发.jQuery旨在改变您编写JavaScript的方式.
首先,下载jQuery.在HTML的head标记中,添加以下内容:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
// Check if the page has loaded completely
$(document).ready( function() {
setTimeout( function() {
$('#some_id').load('index.php');
}, 10000);
});
</script>
Run Code Online (Sandbox Code Playgroud)
在HTML的正文中,添加以下内容:
<div id="some_id"></div>
Run Code Online (Sandbox Code Playgroud)
Kon*_*lph 13
不是,不是.页面加载后10秒(至少)PHP脚本完成后10秒,即它不再运行(除了尝试保持连接打开的技巧,我认为这种技巧在一段时间内不会起作用10秒)!
因此,您需要cron在服务器端安排作业在10秒内启动,或者您需要使用AJAX从网站回调.
如果我将您的问题解释为"我的页面需要很长时间才能生成,现在我可以在生成时每隔10秒调用一次PHP函数",那么有几种方法可以解决这个问题...
$nexttick=time()+10;
$active=true;
while ($active)
{
if (time()>=$nexttick)
{
my_tick_function();
$nexttick=time()+10;
}
//now do some useful processing
$active=do_some_work();
}
Run Code Online (Sandbox Code Playgroud)
可以使用这样的技术来实现长时间运行的进度表,通过让"tick"函数输出一些javascript来更新代表进度表的HTML.
或者,如果您在PHP的构建中启用了Process Control支持,则可能会在经过一定时间后使用pcntl_alarm来调用信号处理程序.
您可以使用declare构造和register_tick_function让PHP引擎每x'ticks'调用您的函数.从手册:
tick是由声明块内的解析器执行的每N个低级别可勾选语句发生的事件.在声明块的指令部分中使用ticks = N指定N的值.
这看起来很怪异,但如果您想在不触及HTML/JS的情况下在PHP中执行此操作,可能就是您正在寻找的内容:
<?php
your_website_here();
flush(); //this sends the output to the client. You may also need ob_flush();
sleep(10); //wait 10 seconds
your_func_here();
?>
Run Code Online (Sandbox Code Playgroud)
以上在理论上是可行的,但在实践中它会导致非常消耗内存的app.所以要警告.
请不要贬低我,这只是一个理论上的争议.
这段代码有效。根据兰德尔的回答进行编辑。
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
setTimeout(function() { $('#some_id').load('index.php'); }, 10000);
});
</script>
Run Code Online (Sandbox Code Playgroud)
感谢兰德尔
| 归档时间: |
|
| 查看次数: |
42691 次 |
| 最近记录: |