PHP Cli 模式设置进程名称的方法_php实例

来源:脚本之家  责任编辑:小易  

set_time_limit的影响吧,你在文件前面添加下面语句也可以一直运行的:set_time_limit(0);www.zgxue.com防采集请勿采集本网。

最近一直在优化自己的 PHP 多进程管理工具。GitHub 地址: https://github.com/fingerQin/phpthread

你好,你需要先找到你安装php的主程序,找到php安装目录下有个bin这个子目录,有个无扩展名的单独的php为名字的程序,比如你把php安装到了/usr/env/php下面,那么你的php主程序地址就是/usr/env/php/bin/php

通过命令启动之后,它在系统后台运行的名称如下:

PHP只要安装了curl扩展库在cli模式下就可以直接使用 可以在命令行中输入 php -i|grep curl 检查是否已经安装curl扩展,如果没有安装,可在php源码包中找到curl的源码进行编译扩展,编译完成后

[root@localhost logs]# ps -ef|grep "Event/register"

php_cli模式简介 php-cli是php Command Line Interface的简称,如同它名字的意思,就是php在命令行运行的接口,区别于在Web服务器上运行的php环境(php-cgi,isapi等)也就是说,php不单可以写

root      1358  1356  0 19:50 ?        00:00:00 /usr/local/php72/bin/php cli.php Event/register

1)在cli模式下正常,也能生成b.php文件 2)浏览器下访问index.php,一直在转圈,也不会超时。如果仅是判断function_exists('wing_dz_encrypt_file'),则正常。

root      1482  1358  0 19:55 ?        00:00:00 /usr/local/php72/bin/php cli.php Event/register

?php opt=getopt('m:n:');print_r($opt);然后运行命令 php test1.php -maaaaaa -nbbbbbbb 结果如下: array [m]=>aaaaaa [n]=>bbbbbbb

root      1483  1358  0 19:55 ?        00:00:00 /usr/local/php72/bin/php cli.php Event/register

root      1484  1358  0 19:55 ?        00:00:00 /usr/local/php72/bin/php cli.php Event/register

root      1486  1358  0 19:55 ?        00:00:00 /usr/local/php72/bin/php cli.php Event/register

root      1487  1358  0 19:55 ?        00:00:00 /usr/local/php72/bin/php cli.php Event/register

root      1499  1240  0 19:56 pts/1    00:00:00 grep --color=auto Event/register

大家可以看到。它会把我们执行 PHP 脚本的整个命令路径全部显示出来。没办法伪装成一个特殊的名称,或者说优雅的名称。

查阅相关资料。其实 PHP 早已经支持这种操作。

一、proctitle 扩展实现

在 PHP 5.5.0 版本之前,只能通过 proctitle 扩展实现。下载地址: http://pecl.php.net/package/proctitle

关于安装这种 PHP C 扩展。这里就不展示说明。关于 PHP C 扩展的教程很多。

proctitle 扩展安装好之后。通过该扩展提供的 setproctitle 方法实现自定义进程名称。

process.php

<?phpsetproctitle("NewProcess");sleep(30);

此时我们命令运行脚本:

$php process.php

脚本会睡眠 30 秒。此时我们另开一个终端去查看该进程的名称。会发现该扩展名称已经被修改为:"NewProcess"。

由于该扩展已经 7 年未更新。所以,不推荐使用。

二、cli_set_process_title 方法实现

从 PHP 5.5.0 开始,PHP 已经内置了 cli_set_process_title 方法来解决这个重置进程名称的函数。我只能说,太贴心了。

使用也简单。

process2.php

<?phpcli_set_process_title("NewProcess");sleep(30);

执行该脚本之后,咱们依然别启一个命令终端查看:

[root@localhost public]# ps -ef|grep NewProcess

root     10489  1240  0 09:49 pts/1    00:00:00 NewProcess

root     10496  1221  0 09:50 pts/0    00:00:00 grep --color=auto NewProcess

我们可以看到。已经生效了。

它就是如此简单。以后我们可以将该进程名称优雅化。也可以以此来伪装隐藏自己。总之,你可以用这个神奇的名字干你想干的事情。

总结

以上所述是小编给大家介绍的PHP Cli 模式设置进程名称的方法 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对真格学网网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

cli模式下的PHP,如果有一个文件名为cli.phpcli.php文件内容的代码var_dump($argc);var_dump($argv);并且在命令行中运行下面的命令php cli.php 1那么会输出int(2)array(2){[0]=>string(7)"cli.php"[1]=>string(1)"1}PHP手册对PHP脚本能接受参数的解释如下PHP 的二进制文件(php.exe文件)及其运行的 PHP 脚本能够接受一系列的参数。PHP 没有限制传送给脚本程序的参数的个数(外壳程序对命令行的字符数有限制,但通常都不会超过该限制)。传递给脚本的参数可在全局变量$argv中获取。该数组中下标为零的成员为脚本的名称(当 PHP 代码来自标准输入获直接用-r 参数以命令行方式运行时,该名称为"-")。另外,全局变量$argc存有$argv数组中成员变量的个数(而非传送给脚本程序的参数的个数)。具体请参考PHP手册网页链接内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • php cli模式下的多进程应用分析
  • 使用php+swoole对client数据实时更新(一)
  • php命令行(cli)模式下报require 加载路径错误的解决方法
  • 标准版eclipse搭建php环境的详细步骤
  • php cli配置文件问题分析
  • thinkphp在cli模式下使用模板引擎的方法
  • php封装的httpclient类用法实例
  • php命令行(cli)下执行php脚本文件的相对路径的问题解决方法
  • php网页游戏学习之xnova(ogame)源码解读(十四)
  • thinkphp文件缓存类代码分享
  • php发送邮件的问题详解
  • php针对多用户实现更换头像功能
  • php中session使用示例
  • 深入浅析yii2-gii自定义模板的方法
  • laravel利用gulp如何构建前端资源详解
  • laravel 解决多库下的db::transaction()事务失效问题
  • php两个n位的二进制整数相加问题的解决
  • linux+nginx+mysql下配置论坛程序discuz的基本教程
  • 如何让PHP脚本在cli模式下执行时可接受选项
  • php cli模式为什么可以一直执行程序
  • PHP 怎么运行CLI模式
  • 请问下php如何进入CLI模式
  • linux php怎么在cli模式下执行命令
  • PHP如何在CLI模式下使用CURL库
  • Php cli是守护进程的吗
  • php扩展函数,只能在CLI模式下执行,怎么回事
  • php在CLI模式下传入值的几种方法
  • c#问题,之前用php写了socket服务器端,CLI模式的, 现在想用c#写一个windows 可视化的exe
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php实例php cli模式下的多进程应用分析使用php+swoole对client数据实时更新(一)php命令行(cli)模式下报require 加载路径错误的解决方法标准版eclipse搭建php环境的详细步骤php cli配置文件问题分析thinkphp在cli模式下使用模板引擎的方法php封装的httpclient类用法实例php命令行(cli)下执行php脚本文件的相对路径的问题解决方法php网页游戏学习之xnova(ogame)源码解读(十四)thinkphp文件缓存类代码分享php发送邮件的问题详解php针对多用户实现更换头像功能php中session使用示例深入浅析yii2-gii自定义模板的方法laravel利用gulp如何构建前端资源详解laravel 解决多库下的db::transaction()事务失效问题php两个n位的二进制整数相加问题的解决linux+nginx+mysql下配置论坛程序discuz的基本教程php获取数组长度的方法(有实例)微信公众平台实现获取用户openid教你如何使用php session使用php生成二维码的两种方法(带php发送get、post请求的6种方法简php中把stdclass object转array的微信公众平台网页授权获取用户基laravel框架数据库curd操作、连贯php字符串的连接的简单实例php删除数组中空值的方法介绍php利用pdo_odbc实现连接数据库示例【基于laravel最佳分割路由文件(routes.php)的laravel中简约却不简单的macroable宏指令zend framework动作助手flashmessenger用织梦sitemap地图实时推送给百度的教程php在弹框中获取foreach中遍历的id值并传php实现用户异地登录提醒功能的方法【基于基于php字符串的比较函数strcmp()与strcayii框架中使用phpexcel的方法分析php实现文件下载简单示例(代码实现文件下
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved