【问题标题】:ps aux | grep php --- check for GET argumentsps辅助| grep php --- 检查 GET 参数
【发布时间】:2012-07-22 15:42:39
【问题描述】:

我的网站有一个自制的“进程管理器”,它只解析 shell 命令
ps aux | grep php

这对于查看 php 进程是否占用过多 CPU 或 MEM 很有用。但是,有时我会看到一些 php 进程延迟了一些时间才能完成。问题是这并不能告诉我太多:

/usr/bin/php /home/mysite/public_html/process.php

因为,一个进程可能在很大程度上取决于它接收到的 GET 参数。

所以,我的问题是,是否有可能知道 PHP 进程收到了哪些 GET 参数?

谢谢。

【问题讨论】:

    标签: php shell process


    【解决方案1】:

    假设您在 Linux 或 BSD 系统上,您可以使用 proctitle 更改 php 进程的名称以包含 GET 查询字符串。

    【讨论】:

    • 谢谢。我会对此进行一些调查,如果它对我有用,请接受您的回答。它会影响 PHP 脚本或其他东西的任何功能吗?或者,它会只是添加 GET 查询字符串,仅此而已?
    • @NunoPeralta 您需要将代码添加到您的 process.php 并调用 setproctitle() function 并将您的查询字符串传递给它。
    • 哦,是的!这正是我想要的!这甚至可能对其他事情有用。非常感谢你!! :)
    【解决方案2】:

    唯一的问题是 GET 参数仅在通过您的网络服务器而不是从命令行调用时传递到您的脚本,在您的情况下,您只会获得 ARGS。

    你总是可以在 :

    上做一个 grep
    $ ps -auwwwx | grep my_php_script
    

    在命令行脚本中查看 ARGs

    【讨论】:

    • 我有一些 cronjobs,我以这种方式传递 GET 参数:“process.php arg1=5 foo=bar”。但是,使用“ps auwwwx”并没有向我显示任何传递给 php 进程的 GET 参数。输出与“ps aux”大致相同。谢谢。
    【解决方案3】:

    如果有人需要回答这个问题,我可以将命令从 apache 服务器发送到 ubuntu 控制台,只需: 在 sudoers 文件中添加 www-data 用户权限。

    www-data ALL=(ALL) NOPASSWD:ALL

    并从 php 文件执行命令

    $comand2=  shell_exec('sudo -S service cron restart 2>&1' );
    echo "<pre> $comand2 $</pre>";
    

    【讨论】:

      【解决方案4】:

      如果您想通过 ps 在 linux 控制台上查看进度的详细信息,您必须使用 proctitle 这个 pecl 扩展程序将为您提供

      setproctitle() 函数。

      扩展程序很旧,但即使在 zts 模式下也能正常工作。

      如果您使用的是 cli 版本,您可以使用:cli-set-process-title() 这是原生 php 函数(版本 PHP5 >=)

      我用来在 linux 上跟踪的简单代码:

      <?
      if ((PHP_SAPI === 'cli' OR defined('STDIN'))) {
          $tmp = $_SERVER["argv"];
          unset($tmp[0]);
          $text =  "/". implode('/',$tmp);
          @cli_set_process_title (urldecode($text));
      } else {
          @setproctitle (urldecode($_SERVER["REQUEST_URI"]));
      }
      ?>
      

      我只是把它写到 codeigniter 上的 top index.php。

      查看进程在 linux 上使用最多的 cpu 和内存:

      ps o pid,stat,time,pcpu,pmem,cmd -C php --sort -pcpu
      

      现在您将能够看到进程

      【讨论】:

        猜你喜欢
        • 2014-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-21
        • 2019-06-12
        • 2015-12-31
        • 1970-01-01
        相关资源
        最近更新 更多