新闻详情

新闻详情

首页 / 资讯中心 / 详情

PHP命令行脚本与进程管理

发布时间:2026/9/19 15:15:53来源:尧图网络
PHP命令行脚本与进程管理
PHP命令行脚本与进程管理PHP不仅做Web开发也适合写命令行脚本。定时任务、数据处理、队列消费都用得上。命令行参数解析。phpecho 脚本名: {$argv[0]}\n;echo 参数个数: $argc\n;for ($i 1; $i $argc; $i) {echo 参数{$i}: {$argv[$i]}\n;}$options getopt(u:p:h:, [host:, port:, help]);if (isset($options[help])) {echo 用法: php script.php -u 用户名 -p 密码\n;echo -u 用户名\n;echo -p 密码\n;echo --host 主机名\n;echo --port 端口\n;exit(0);}$username $options[u] ?? null;$password $options[p] ?? null;$host $options[h] ?? $options[host] ?? localhost;?彩色输出让CLI工具的提示信息更醒目。phpclass Console{const COLORS [red \033[31m, green \033[32m, yellow \033[33m,blue \033[34m, reset \033[0m,];public static function info(string $message): void{echo self::COLORS[green] . [INFO] . self::COLORS[reset] . $message . \n;}public static function error(string $message): void{echo self::COLORS[red] . [ERROR] . self::COLORS[reset] . $message . \n;}public static function warning(string $message): void{echo self::COLORS[yellow] . [WARNING] . self::COLORS[reset] . $message . \n;}public static function progressBar(int $current, int $total, int $width 50): void{$percent round($current / $total * 100);$filled round($width * $current / $total);$bar str_repeat(, $filled) . str_repeat( , $width - $filled);printf(\r进度: [%s] %d%% (%d/%d), $bar, $percent, $current, $total);if ($current $total) echo \n;}public static function table(array $headers, array $rows): void{$widths [];foreach ($headers as $i $header) {$widths[$i] strlen($header);foreach ($rows as $row) $widths[$i] max($widths[$i], strlen((string)($row[$i] ?? )));}$sep . implode(, array_map(fn($w) str_repeat(-, $w 2), $widths)) . ;echo $sep . \n;echo | . implode( | , array_map(fn($h, $i) str_pad($h, $widths[$i]), $headers, array_keys($headers))) . |\n;echo $sep . \n;foreach ($rows as $row) {echo | . implode( | , array_map(fn($v, $i) str_pad((string)$v, $widths[$i]), $row, array_keys($row))) . |\n;}echo $sep . \n;}}Console::info(系统启动);Console::warning(磁盘空间不足);Console::error(连接失败);Console::table([ID, 姓名, 状态], [[1, 张三, 活跃], [2, 李四, 离线]]);for ($i 1; $i 100; $i) {Console::progressBar($i, 100);usleep(30000);}?多进程可以并行处理任务充分利用多核CPU。phpfunction parallelProcess(array $tasks, int $workerCount 4): void{$chunks array_chunk($tasks, ceil(count($tasks) / $workerCount));$children [];foreach ($chunks as $chunkId $taskList) {$pid pcntl_fork();if ($pid -1) die(fork失败);elseif ($pid 0) {foreach ($taskList as $task) {echo Worker $chunkId 处理: $task\n;sleep(1);}exit(0);} else {$children[] $pid;}}foreach ($children as $pid) {pcntl_waitpid($pid, $status);echo 进程 $pid 已退出\n;}}$tasks range(1, 20);parallelProcess($tasks, 4);?命令行脚本在PHP开发中占有一席之地。定时任务用cron加PHP脚本数据处理用管道重定向队列消费用守护进程模式。掌握了命令行开发PHP的应用场景就不局限于Web了。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

UE5 GameInstance子系统原理与跨关卡通信实战指南 2026/9/19 15:36:51

UE5 GameInstance子系统原理与跨关卡通信实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
信息化国产化替代方案:从资产盘点到落地验收的完整路线图 2026/9/19 15:36:51

信息化国产化替代方案:从资产盘点到落地验收的完整路线图

简介:面向企业信息化管理岗位的国产化替代方案PDF,聚焦破解软硬件受制于人的现实痛点,适用于正在推进自主可控改造的各类企事业单位。文档以某公司为样本,指出432台信息化设备中仍有252台非国产化,并逐一梳理计算机、存…

阅读更多 →
隐式梯形法在电力系统暂态稳定仿真中的实现与验证 2026/9/19 15:36:51

隐式梯形法在电力系统暂态稳定仿真中的实现与验证

简介:本资源是一份面向电力系统专业本科生与研究生的MATLAB暂态稳定分析实践报告,聚焦于隐式梯形积分法在IEEE 3机9节点系统中的工程实现。针对7号节点三相短路故障(pt时刻发生、ct时刻切除)这一典型扰动场景,完整推导…

阅读更多 →
网上校友通讯系统开发实战:从数据建模到程序清单落地 2026/9/19 15:36:51

网上校友通讯系统开发实战:从数据建模到程序清单落地

简介:这是一份网上校友通讯系统课程设计完整文档,共1个doc文件,压缩包大小1.18MB,适合计算机及相关专业学生完成数据库课程设计、信息系统开发实践时参考。文档覆盖需求分析、系统功能划分、数据流图与数据字典、概念结构设计&…

阅读更多 →
google_maps_flutter_ios_sdk10 版本演进全解析:从 2.17.3 到 2.18.13 的 Swift 化重构与功能迭代 2026/9/19 15:36:51

google_maps_flutter_ios_sdk10 版本演进全解析:从 2.17.3 到 2.18.13 的 Swift 化重构与功能迭代

google_maps_flutter_ios_sdk10 版本演进全解析:从 2.17.3 到 2.18.13 的 Swift 化重构与功能迭代 【免费下载链接】packages A collection of useful packages maintained by the Flutter team 项目地址: https://gitcode.com/GitHub_Trending/pac/packages …

阅读更多 →
Arduino IDE开发环境搭建全解析:跨平台底层原理与实战 2026/9/19 15:33:51

Arduino IDE开发环境搭建全解析:跨平台底层原理与实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞