一个项目要需要当用一登录网站首页,就要得到用户以前的一些相关数据,由于这些数据很大所以要很常时间才能完全得到。
但是PHP是顺序执行的,只有当前面的就句执行完成了才会向下执行,如此,用户就要等很长的时间。
于是便考虑要让PHP异步执行。由于是WAP网站开发所以不能用AJAX和iframe等技术,所以只能用户服务器端技术,首先写一个C程序让他启动一个进程,让这个子进程去执行一个php文件。而让主进程很快的返回。
本想这样就能骗过PHP的(exec ,system)函数,在页面上一试让我感到不解的是PHP还是在等待那个C程序的完全执行完,也就是说等待那个C程序的子进程也结束了。
后来试了下popen函数,结果真的不在等待了,它只等待主进程结束就所回一个流。
然后,在关闭这个流就可以了,而这时子进程还在执行。
查看PHP的源码才发现,在PHP中所有的exec,system,shell_exec等函数在系统C级都是用C语言的。
popen函数来执行传给他们的命令的。
它打开一个进程流,并在所以进程执行完成后。
在关闭这个进程流,所以那些函数会有一个等待和关流的过程所以会很慢。
而PHP的popen函数会执行C程序的POPEN函数,并返回一个进程流。所以它不会去等待。
以上就是有关php在服务器端异步执行的思路与具体实现过程,希望对大家有所帮助。