首页 > 编程知识 正文

进行php文件后台监控执行(php实时监控)

时间:2023-12-24 12:05:25 阅读:320258 作者:OSZA

本文目录一览:

PHP如何在后台执行

在后台执行,也就是cli模式。

去php安装目录找到php.exe这个文件,并且在命令行下执行它。具体方法去查手册或google:php cli模式。

不过你说的这个需求,用不用cli模式都无所谓。其实这只是个异步请求而已。

你说的A脚本在执行过程中给B脚本传输数据。其实可以使用http协议,然后POST或者GET参数来达到传数据的目的。

5楼给你的那个函数,其实就是放在A脚本中用来通过HTTP协议请求B脚本的一个函数。你可以在B文件中直接使用$HTTP_GET_VARS或$HTTP_POST_VARS来得到A脚本传过去的数据。

另外还可以使用CURL库来实现这种模拟http请求。

PHP如何后台线程监控数据库?

提供一个很有趣的思路,不用cron实现这个功能譬如你的脚本url是 [*]php[*]1.去除你脚本的运行时限[*]2.运行你的处理代码[*]3.sleep 30minute[*]4.fsocketopen( )5.exit

PHP程序,如何监控内存情况

看到有人写透视宝做php监控的原理图,跟你分享下。我估计大家做的方式都是差不多。

PHP运行支撑的ZendEngine早在设计过程中已经预留了丰富的Hook,可以有效干涉处理过程中的几个关键步骤。利用了以下几个Hook,就能方便的获取数据:

1.           zend_compile_file zend_compile_string

加载分析文件或字符串,本身就会造成非常大的IO,如果过多地执行加载,无疑会造成内存和CPU的消耗.通过这两个hook,可以取得文件名、执行行数、使用内存和CPU占用时间。

2.           zend_execute zend_execute_internal

通过这两个hook的使用,我们可以准确地分析得出一个PHP应用中的类调用、方法调用、方法参数、内存占用和CPU占用,加以分析,便可以准确得出应用系统运行过程中的方法运行栈,API调用地址,SQL语句,CacheKey以及Cache命中等关键信息。

3.           zend_throw_exception_hook

利用异常钩子,可以准确地得到应用系统运行过程中出现的异常信息,当然包括异常发生的类方法位置,参数,异常code和异常message。

4.           zend_error_cb

错误钩子则更加直接,可以准确得到系统运行过程中出现的任何一个warning,代码错误或语法错误。

请问php如何实现实时监控文件.

在服务端建立一个根据需要进行循环的PHP脚本就可以。

猜测一下,您的第二个问题,是不是想进行相关检测以避免重复触发这个脚本。

实际上,不建议由用户行为触发这个脚本,无论是服务端代码,还是客户端的异步Ajax。

如果要用PHP脚本进行不停的循环监控,请联系运维人员,服务器启动,即在服务端开始运行这个脚本,他们会向您提供解决方案的。

真正的建议是,如果有任何可能,都不要使用PHP脚本利用循环代码进行服务端的监控。

不得不承认,这个方面PHP的稳定性还差一些,Java或许可以这么做,PHP就比较痛苦了。

比较可能的办法是请运维人员帮忙,通报监控逻辑,然后请他安装各种触发条件调用相应的PHP代码。

如果坚持使用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 ' . "rn";

                  $update = true;

              }

          }

          if ($update) {

              ThinkLog::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('BehaviorCronRunBehavior'),

);

③、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 HomeController;

use ThinkController;

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 }/stylediv style="padding: 24px 48px;" h1:)/h1p欢迎使用 bThinkPHP/b!/p/divscript 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") . "执行定时任务!" . "rnbr", 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('BehaviorCronRunBehavior'),

);

②、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")."执行定时任务!" . "rnbr";

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

[php] view plain

?php

  return array (

      'cron' =

          array (

              0 = 'myplan',

              1 = 60,

              2 = 1398160322,

          ),

  );

?

      这样就可以观察结果了!

PHP写的后台,如何监听浏览器的请求,如何做到浏览器访问一个地址,后台就有相应的处理的?

呃,不是很明白你的意图,我就这样回答吧

一般我们访问一个页面都是输入有url

这时,浏览器发送了一个http请求,请求的内容当然是一个页面

你所说的监听浏览器的请求,与其说是后台脚本在监听,倒不如说是服务器在监听(脚本在服务器上运行),是服务器监听到端口有请求,才去执行相应的脚本程序

一般情况下,我们有2种做法,让后台脚本运行。

1是直接访问该脚本文件(或者说是动态页)

2是ajax请求(实际上也相当于把这个动态页跑了一遍,只不过,不让用户看到)

浏览器访问一个地址时,如果该地址映射的就是一个脚本页的话,则该脚本页就已经开始执行了(即所谓响应浏览器请求),当然前提是,你的服务器配置了可以让php脚本运行的环境,能够让php脚本正常运行

至于监听到请求之后如何处理请求,完全是看你的脚本页是怎么写的,你的php文件写了什么功能,他就执行什么功能

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。