命令行脚本

PHP-CLI 全称(PHP Command Line Interface),主要是运行用于需要占用大量内存或较长执行时间的脚本。

参数

/data/bin/php -c /data/conf/php.ini -d display_errors=1 -d max_execution_time=10 -f $codeFilename;

使用方式

php 命令行直接设置运行参数,也可以使用指定的 php.ini ,还可以在代码中设置可用最大内存。

运行PHP脚本

 /usr/bin/php -d memory_limit=32MB index.php a=1&b=2  2>&1 > /dev/null &

注意事项

  • 脚本长时间运行时需要注意环境变量和配置文件调整
  • 避免死循环,占用内存过多
  • 合适的脚本执行时间
  • 使用daemon来保持
  • 后台运行
  • 大文件并发分开执行
  • 数据扫库操作

范例

从参数中获取数据:

[运行代码]

/**
 * phpcli 从 $argv 中解析合并参数, 兼容 无前缀, 单前缀, 双前缀形式
 * @example : php index.php first -s 'second' --third='third'
 * @return array('first', 's' => 'second', 'third' => 'third')
 */
function getArguments()
{
    $arguments = $_SERVER['argv'];
    for ($i = 0; $i < $_SERVER['argc']; $i++) {
        if (!isset($arguments[$i][0])) {
            continue;
        }
        //判断第一位是否是 '-'
        if (substr($arguments[$i], 0, 1) != '-') {
            continue;
        }
        //判断第二位是否是 '-'
        if (substr($arguments[$i], 1, 1) != '-') {
            if (strlen($arguments[$i]) == 2) {
                $key = substr($arguments[$i], 1);
                $value = $arguments[$i + 1];
                $arguments[$key] = trim($value);
                unset($arguments[$i]);
                unset($arguments[$i + 1]);
            } elseif (strlen($arguments[$i]) > 2) {
                $key = substr($arguments[$i], 1, 1);
                $value = substr($arguments[$i], 2);
                $arguments[$key] = trim($value);
                unset($arguments[$i]);
            } else {
                //do nothing;
                
            }
        } else {
            $value = substr($arguments[$i], 2);
            $value = explode('=', $value, 2);
            $arguments[$value[0]] = trim($value[1]);
            unset($arguments[$i]);
        }
    }
    return $arguments;
}

[执行结果]


参见

安装配置 安装 php.ini php-fpm.conf
基础 简介 历史 基本语法 函数
数据类型 string number boolean object array
面向对象 class abstract interface trait
文件操作 file excel csv word pdf json xml yaml
应用 mysql memcache sqlite nosql postgresql mongodb redis kafka etcd sphinx solr elasticsearch

rsyslog queue log gd imagick ffmpeg

扩展 extension curl pdo swoole
PHP框架 yaf yii laravel cakephp zend thinkphp