本文目录一览:
- 1、php中怎么实现后台执行
- 2、求助各位大神,请问PHP脚本如何实现后台执行
- 3、如何让PHP文件在后台运行,不限时间到运行完全
- 4、php如何在后台运行
- 5、PHP后台任务运行
- 6、php中怎么实现后台执行??
php中怎么实现后台执行
具体代码如下:
?php
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, '');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
?
PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。
它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,
执行效率比完全生成HTML标记的CGI要高许多;
PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
求助各位大神,请问PHP脚本如何实现后台执行
ignore_user_abort(true); // 后台运行
set_time_limit(0); // 取消脚本运行时间的超时上限
后台运行的后面还要,set_time_limit(0); 除非在服务器上关闭这个程序,否则下面的代码将永远执行下去止到完成为止。
如果程序运行不超时,在没有执行结束前,程序不会自动结束的.
=========================================
//PHP 中如何 在客户端触发,然后在服务器端执行一个函数,页面关闭也继续执行。要先返回用户请求不要等待时。
ob_end_clean();#清除之前的缓冲内容,这是必需的,如果之前的缓存不为空的话,里面可能有http头或者其它内容,导致后面的内容不能及时的输出
header("Connection: close");//告诉浏览器,连接关闭了,这样浏览器就不用等待服务器的响应
header("HTTP/1.1 200 OK"); //可以发送200状态码,以这些请求是成功的,要不然可能浏览器会重试,特别是有代理的情况下
//return false;//加了这个下面的就不执行了,不加这个无法返回页面状态,浏览器一直在等待状态,可以关闭,但不是要的效果。
//die(); 或 return ;也一样不执行下面的
//rundata();
//register_shutdown_function("rundata");
//return ;
ob_start();#开始当前代码缓冲
echo "running,,,,.";
//下面输出http的一些头信息
$size=ob_get_length();
header("Content-Length: $size");
ob_end_flush();#输出当前缓冲
flush();#输出PHP缓冲
#休眠PHP,也就是当前PHP代码的执行停止,1秒钟后PHP被唤醒,
#PHP唤醒后,继续执行下面的代码,但这个时候上面代码的结果已经输出浏览器了,
#也就是浏览器从HTTP头中知道了服务端关闭了连接,浏览器将不在等待服务器的响应,
#反应给客户的就是页面不会显示处于加载状态中,换句话说用户可以关掉当前页面,或者关掉浏览器,
#PHP唤醒后继续执行下面的代码,这也就实现了PHP后台执行的效果,
#休眠的作用只是让php先把前面的输出作完,不要急于马上执行下面的代码,休息一下而已,也就是说下面的代码
#执行的时候前面的输出应该到达浏览器了
sleep(1);
echo '这里的输出用户看不到,后台运行的';
//下面代码的任何输出都不会输出给浏览器,因为http连接已经关了,
//所以下面的代码的执行属于后台运行的
ignore_user_abort(true); // 后台运行,这个只是运行浏览器关闭,并不是直接就中止返回200状态。
set_time_limit(0); // 取消脚本运行时间的超时上限
rundata();
function rundata(){//do something}
=========================================
用ignore_user_abort函数实现php计划任务
代码如下:
?php
ignore_user_abort(true);
set_time_limit(0);
while(1) {
$fp = fopen('time_task.txt',"a+");
$str = date("Y-m-d h:i:s")."\n\r";
fwrite($fp,$str);
fclose($fp);
sleep(300); //半小时执行一次
}
?
=======================================
int ignore_user_abort ( [bool setting] )
这个函数的作用是指示服务器端在远程客户端关闭连接后是否继续执行下面的脚本。
setting 参数是一个可选参数。如设置为True,则表示如果用户停止脚本运行,仍然不影响脚本的运行(即:脚本将持续执行);如果设置为False,则表示当用户停止运行脚本程序时,脚本程序将停止运行。
下面这个例子,在用户关闭浏览器后,该脚本仍然后在服务器上继续执行:
ignore_user_abort(true); // 后台运行
set_time_limit(0); // 取消脚本运行时间的超时上限
do{
sleep(60); // 休眠1分钟
}while(true);
?
除非在服务器上关闭这个程序,否则这断代码将永远执行下去。
-------------------------------------------------------------------------
ignore_user_abort(true); // 后台运行
set_time_limit(0); // 取消脚本运行时间的超时上限
echo 'start.';
sleep(1000);
echo 'end.';
?
如何让PHP文件在后台运行,不限时间到运行完全
方案1:php
?php
$db = mysql_connect( ... );
$mysql_select_db(...);
$sqlStr = .....;
$res = mysql_query($sqlStr);
....
....
mysql_close($db);
?
运行的时候, 在终端用以下命令:
%PHP_HOME%/bin/php ur_php_file.php
方案二:
mysql -uxxxx -pxxxx -Ne "select * from ....." db_name tmpfile
执行完了之后, 把tmpfile里边的退格键(\t)替换成逗号“,”, 把文件后缀改为csv就可以
php如何在后台运行
最好的办法就是AJAX来实现,我写个JQuery AJAX 的简单例子给你参考
例:
div id="myform"
p数量:input type="text" name="qur"//p
p大小:input type="text" name="size"//p
p颜色:input type="text" name="color"//p
pbutton id="submit"确定/button/p
/div
$(function(){
$("#submit").click(function(){
var mydata = new object();
mydata.qur = $("input[name='qur']","#myform").val();
mydata.size = $("input[name='size']","#myform").val();
mydata.color = $("input[name='color']","#myform").val();
$.ajax({
type: "post",
url: "your_ajax.php",
data: mydata,
success:function(data){
alert("保存成功!");
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
});
});
PHP后台任务运行
在运行前 先要了解一下 什么是文件描述符。
什么是文件描述符?
文件描述符是一个简单的正整数,用以标明每一个被进程所打开的文件和socket。
最前面的三个文件描述符(0,1,2)分别与标准输入(stdin),标准输出(stdout)和标准错误(stderr)对应。
"21 file"和 " file 21"区别?
1.php test.php 21 file :错误输出到终端,标准输出被重定向到文件file。
2.php test.php file 21 :标准输出被重定向到文件file,然后错误输出也重定向到和标准输出一样,所以错误也输出到文件file。
nohup命令可以在用户退出终端后仍然执行程序,
“21 /dev/null”表示不显示标准输出和错误输出,
最后的表示推到后台执行。
php中怎么实现后台执行??
用 ajax 实现异步加载
然后
i
gnore_user_abort(true);
//即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.
set_time_limit(0);
while(1) {
$fp = fopen('time_task.txt',"a+");
$str = date("Y-m-d h:i:s")."\n\r";
fwrite($fp,$str);
fclose($fp);
sleep(5); //半小时执行一次
}