本文目录一览:
- 1、如何让PHP返回AJAX后,继续在后台
- 2、PHP里有什么办法在确定上一条完全执行成功后再继续执行
- 3、php怎么样提前响应,后续代码在后台继续运行
- 4、thinkphpredirect后还继续执行dieexit
- 5、Apache需要将php文件交给PHP解释器处理后再 返回给浏览器,那PHP如何运行的呢?
如何让PHP返回AJAX后,继续在后台
PHP端通常是这样回应jQuery的post:
1234$response['status'] = 1;$response['message'] = 'worked';echo json_encode($response);exit();
这样在post的回调函数中就可以接收到function(data,status)的两个参数了。
1234 $.post("xxx.php",jsonData, function(data,status){ alert("Data: " + data + "\nStatus: " + status); });-php先返回继续执行
PHP里有什么办法在确定上一条完全执行成功后再继续执行
可以在获得这个网页的内容的代码处,设置一个时间延迟,比如60秒。
sleep(60);
php怎么样提前响应,后续代码在后台继续运行
ignore_user_abort(true); // 后台运行,这个只是运行浏览器关闭,并不是直接就中止返回200状态。
set_time_limit(0); // 取消脚本运行时间的超时上限
rundata();
$i=0;
do{
sleep(60); // 休眠1分钟
$i++;
error_log($i.'-',3,'aa.txt');
}while(true);
function rundata(){//do something
}
?
thinkphpredirect后还继续执行dieexit
function del 执行完毕后,也就是执行 echo 输出语句之后,由于方法已经执行完毕,apache 会把echo 输出的结果返回给 客户端,浏览器接收到script 脚本后就会执行脚本中的语句,所以就弹窗了;-php先返回继续执行
但是加上 redirect 之后就不弹窗了,因为方法执行到 echo 之后并该方法并没有结束,所以会先继续向后执行,之后遇到 redirect 方法就跳走了,而之前echo 输出的脚本并没有返回给客户端,所以没有弹窗。-php先返回继续执行
Apache需要将php文件交给PHP解释器处理后再 返回给浏览器,那PHP如何运行的呢?
1.我们从未手动开启过PHP的相关进程,它是随着Apache的启动而运行的;
2.PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口);
3.PHP总共有三个模块:内核、Zend引擎、以及扩展层;
4.PHP内核用来处理请求、文件流、错误处理等相关操作;
5.Zend引擎(ZE)用以将源文件转换成机器语言,然后在虚拟机上运行它;
6.扩展层是一组函数、类库和流,PHP使用它们来执行一些特定的操作。比如,我们需要mysql扩展来连接MySQL数据库;
7.当ZE执行程序时可能会需要连接若干扩展,这时ZE将控制权交给扩展,等处理完特定任务后再返还;
8.最后,ZE将程序运行结果返回给PHP内核,它再将结果传送给SAPI层,最终输出到浏览器上。