好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php后台执行代码 php代码执行过程

很多站长朋友们都不太清楚php后台执行代码,今天小编就来给大家整理php后台执行代码,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 thinkphp中怎么实现后台执行任务 2、 php中怎么实现后台执行 3、 php中怎么实现后台执行?? 4、 PHP后台任务运行 5、 求助各位大神,请问PHP脚本如何实现后台执行 thinkphp中怎么实现后台执行任务

ThinkPHP实现定时执行任务的两种方法

1、方法一:v3.2.1

①、ThinkPHP/Library/Behavior/CronRunBehavior.class.php文件

      在这里首先要说的就是这个自动执行任务文件,官方所给的这个文件存在BUG,我是用的是v3.2.1版本,后面的版本是否有改正大家可以尝试一下。

[php] view plain

<?php

/**

* =======================================

* Created by WeiBang Technology.

* Author: ZhiHua_W

* Date: 2016/9/22 0005

* Time: 上午 11:12

* Project: ThinkPHP实现定时执行任务

* Power: 自动执行任务

* =======================================

*/

namespace Behavior;

class CronRunBehavior

{

  public function run($params)

  {

      if (C('CRON_CONFIG_ON')) {

          $this->checkTime();

      }

  }

  private function checkTime()

  {

      if (F('CRON_CONFIG')) {

          $crons = F('CRON_CONFIG');

      } else if (C('CRON_CONFIG')) {

          $crons = C('CRON_CONFIG');

      }

      if (!empty($crons) is_array($crons)) {

          $update = false;

          $log = array();

          foreach ($crons as $key => $cron) {

              if (empty($cron[2]) || $_SERVER['REQUEST_TIME'] > $cron[2]) {

                  G('cronStart');

                  R($cron[0]);

                  G('cronEnd');

                  $_useTime = G('cronStart', 'cronEnd', 6);

                  $cron[2] = $_SERVER['REQUEST_TIME'] + $cron[1];

                  $crons[$key] = $cron;

                  $log[] = 'Cron:' . $key . ' Runat ' . date('Y-m-d H:i:s') . ' Use ' . $_useTime . ' s ' . "\r\n";

                  $update = true;

              }

          }

          if ($update) {

              \Think\Log::write(implode('', $log));

              F('CRON_CONFIG', $crons);

          }

      }

  }

}

      此段代码已经将bug修复,大家可以将其复制到 “ ThinkPHP/Library/Behavior/CronRunBehavior.class.php ” 文件中进行保存。

②、tgs.php

      在Application/Common/Conf文件夹中新建tags.php文件,进行标签设置。

[php] view plain

<?php

return array(

  //'配置项'=>'配置值'

  'app_begin' =>array('Behavior\CronRunBehavior'),

);

③、config.php

      在Application/Common/Conf文件夹中的config.php文件进行自动运行配置。

[php] view plain

<?php

return array(

  /* 自动运行配置 */

  'CRON_CONFIG_ON' => true, // 是否开启自动运行

  'CRON_CONFIG' => array(

      '测试执行定时任务' => array('Home/Index/crons', '5', ''), //路径(格式同R)、间隔秒(0为一直运行)、指定一个开始时间

  ),

);

④、IndexController.class.php

      在Application/Home/Controller/IndexController.class.php文件中进行定时执行任务的编写。

[php] view plain

<?php

/**

* =======================================

* Created by WeiBang Technology.

* Author: ZhiHua_W

* Date: 2016/9/22 0005

* Time: 上午 11:20

* Project: ThinkPHP实现定时执行任务

* Power: 自动执行任务方法控制器

* =======================================

*/

namespace Home\Controller;

use Think\Controller;

class IndexController extends Controller

{

  /*

  public function index(){

  $this->show('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px }</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>欢迎使用 <b>ThinkPHP</b>!</p></div><script type="text/javascript" src="" charset="UTF-8"></script>','utf-8');

  }

  */

  public function index()

  {

      $contents = file_get_contents("test.txt");

      //每次访问此路径将内容输出,查看内容的差别

      var_dump($contents);

      exit;

      $this->assign("contents", $contents);

      $this->display();

  }

  //定时执行的方法

  public function crons()

  {

      //在文件中写入内容

      file_put_contents("test.txt", date("Y-m-d H:i:s") . "执行定时任务!" . "\r\n<br>", FILE_APPEND);

  }

}

       这样定时执行任务我们就写好了,每隔5秒我们访问任何项目的url,然后查看根目录下的test.txt文件就会发现里面的内容变化。

       注意:当你修改间隔时间时会发现没有生效,这是你需要将Runtime/Data文件夹下的缓存文件删除,间隔时间缓存存放在CRON_CONFIG.php文件中。

       纯净的项目文件下载地址: 欢迎大家下载指正。

2、方法2:v3.2.2

      此方法和方法一没有多大的区别。

①、tags.php

      在/Application/Common/Conf目录下新建tags.php文件。(此和方法一处一样)

[php] view plain

<?php

return array(

  //'配置项'=>'配置值'

  'app_begin' =>array('Behavior\CronRunBehavior'),

);

②、crons.php

     在/Application/Common/Conf目录下新建crons.php文件。(此处和方法一有区别,注意区分。)

[php] view plain

<?php

return array(

  //myplan为我们计划定时执行的方法文件,2是间隔时间,nextruntime下次执行时间

  //此文件位于/Application/Cron/目录下

  'cron' => array('myplan', 2, nextruntime),

);

③、myplan.php

      在/Application/Common/目录下新建 Cron文件夹,里面新建文件myplan.php文件。

[php] view plain

<?php

echo date("Y-m-d H:i:s")."执行定时任务!" . "\r\n<br>";

      此时我们就可以访问项目的url,然后我们会发现在Application/Runtime/目录下生成了~crons.php文件,文件内容如下:

[php] view plain

<?php

  return array (

      'cron' =>

          array (

              0 => 'myplan',

              1 => 60,

              2 => 1398160322,

          ),

  );

?>

      这样就可以观察结果了!

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中怎么实现后台执行??

用  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); //半小时执行一次 

}

PHP后台任务运行

在运行前 先要了解一下 什么是文件描述符。

什么是文件描述符?

文件描述符是一个简单的正整数,用以标明每一个被进程所打开的文件和socket。

最前面的三个文件描述符(0,1,2)分别与标准输入(stdin),标准输出(stdout)和标准错误(stderr)对应。

"2>1 > file"和 "> file 2>1"区别?

1.php test.php 2>1 > file :错误输出到终端,标准输出被重定向到文件file。

2.php test.php > file 2>1 :标准输出被重定向到文件file,然后错误输出也重定向到和标准输出一样,所以错误也输出到文件file。

nohup命令可以在用户退出终端后仍然执行程序,

“2>1 > /dev/null”表示不显示标准输出和错误输出,

最后的表示推到后台执行。

求助各位大神,请问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后台执行代码的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php后台执行代码 php代码执行过程的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did225849
更新时间:2023-05-11   阅读:38次

上一篇: 南充北大青鸟php 成都 北大青鸟

下一篇:php动态查数据 php调用动态库

相关资讯

最新资料更新

  • 1.php获取数组坐标 php获取数组的值
  • 2.php变量获取图片 php调用图片
  • 3.phpwsdl调用 php调用php文件
  • 4.phppngjpeg的简单介绍
  • 5.php压缩上传的图片 php上传图片文件
  • 6.php_syntax的简单介绍
  • 7.php视频直播源码 php直播源码免费
  • 8.php怎么登录会员 怎么用php完成登录页面
  • 9.登录注册的php代码 php用户注册登录代码
  • 10.php下载文件完整官方版 php在哪下载
  • 11.php实现小说目录的方法 php自动生成小说
  • 12.php判断多个字符串 php判断字符串包含字符
  • 13.php菱形的输出 php输出菱形星号
  • 14.php下载csv乱码 php下载文件名乱码
  • 15.php资源扫描教程 php识别二维码内容源码
  • 16.phpwhere循环 php中的循环
  • 17.安卓phpapp 安卓php服务器
  • 18.极路由安装php环境 极路由安装v2ray
  • 19.php会做流控吗 php流程控制
  • 20.php框架开发教程 php系统开发框架

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]