저는 php-cli 모드가 PHP 프로그램의 쉘과 유사한 명령 스타일 실행이라는 것을 이전에 알고 있었지만, 프로그래밍에 이 cli 모드를 사용하는 사람을 본 적이 없기 때문에 이것이 이전 버전의 방식이고 의미가 없어야 한다고 항상 생각했습니다. 그런데 오늘 cli 모드를 사용하는 애플리케이션을 만났습니다
php_cli 모드 소개
php-cli는 php Command Line Interface의 약자로 이름에서 알 수 있듯이 php가 명령줄에서 실행되는 인터페이스입니다. PHP 환경(php-cgi, isapi 등)을 실행하는 것과는 다릅니다. 즉, PHP는 프런트 엔드 웹 페이지를 작성할 수 있을 뿐만 아니라 백그라운드 프로그램을 작성하는 데에도 사용할 수 있습니다. PHP CLI 쉘 스크립팅은 PHP의 모든 장점을 적용하여 서버 측 스크립트나 시스템, 심지어 GUI를 사용하는 애플리케이션을 생성할 수 있습니다! ——참고: Windows와 Linux 모두 php_cli 모드를 지원합니다.
PHP-cli 애플리케이션 시나리오:
1. 다중 스레드 애플리케이션
Brother Niao에서 인용한 이 측면의 이점:
장점:
1. 프로세스, 하위 프로세스가 종료된 후 커널은 리소스 재활용을 담당합니다.
2. 여러 프로세스를 사용할 때 하위 프로세스가 비정상적으로 종료되어도 전체 프로세스 스레드가 종료되지는 않습니다.
3. 작업 배포만 담당하는 상주 프로세스로 인해
php의 멀티스레딩이 더 명확해졌습니다. 일반적으로 PHP에는 멀티스레딩이 없다고 생각합니다. 멀티 스레딩(curl은 실제 멀티 스레딩이 아닌 시뮬레이션된 멀티 스레딩입니다), php_cli 모드의 PHP는 완전히 멀티 스레딩입니다. 현재 php는 리눅스의 데몬 프로세스에 속해 있습니다. 이전에 "PHP 멀티스레드 일괄 수집 및 뷰티 사진 다운로드(계속)"를 작성했을 때 컬렉션 프로그램에서 멀티스레딩을 시뮬레이션하기 위해 컬을 사용했지만 브라우저에서 실행할 때 실행 시간 초과 또는 메모리 중단도 발생했습니다. 프로그램이 중단되게 하지만(완전히 성공하려면 여러 번 시도해야 함) php-cli 모드에서 실행하면 프로그램이 매우 빠르게 실행되고 PHP 멀티스레드 실행의 장점이 충분히 발휘됩니다.
참고: 이 멀티스레딩 방법은 아직 성숙되지 않았으며 대규모 생성 응용 프로그램에는 적합하지 않습니다. 가끔 사용할 수 있습니다.
2. PHP 프로그램을 정기적으로 실행
전에 "PHP 예약"의 세 가지 방법을 요약했습니다. 실행 예약된 작업". 사용하는 방법 중 하나는 Linux의 cron 메서드를 사용하는 것입니다. 그렇다면 이 메서드는 어떻게 정기적으로 PHP 프로그램을 실행합니까? 아래를 참조하세요
3. 데스크톱 애플리케이션 개발
PHP를 사용하여 Windows 또는 Linux에서 그래픽 사용자 인터페이스(GUI) 애플리케이션을 만들 수 있습니다! 필요한 것은 PHP의 명령줄 인터페이스와 GTK 패키지뿐입니다. 이를 통해 진정한 이식성 있는 그래픽 사용자 인터페이스 응용 프로그램을 만들 수 있으며(하하, 이전에는 php를 데스크탑 프로그램으로 사용할 수 있다는 것만 알았지만 이제는 php_cli 모드를 사용한다는 것을 알고 있습니다), 다른 것을 배울 필요가 없습니다.
4. PHP 쉘 스크립트 작성
bash 쉘이나 Perl 사용법을 모르지만 실행할 스크립트가 필요한 경우 어떻게 해야 합니까? 이때, 쉘 스크립트 작성에 익숙한 PHP를 완벽하게 사용할 수 있습니다. 이때 갑자기 PHP가 너무 강력하다는 생각이 드시나요? ——진정으로 어디서나 하나의 언어를 개발하십시오!
PHP_CLI 사용 방법
다음 실행 방법을 사용하세요.
php.exe가 D:xamppphp에 있고 dos 명령을 다음과 같이 실행할 수 있다고 가정합니다.
코드를 복사합니다 코드는 다음과 같습니다. :
D:xamppphpphp.exe D:xampphtdocstest.php
test.php 파일을 실행할 수 있습니다. 여기에서는 wamp보다 실제로 N배 더 강력한 win 플랫폼의 xampp 통합 환경을 권장합니다. 이 통합 패키지는 dos 모드로 직접 들어갈 수 있습니다.
Linux에서 php_cli를 사용하려면
먼저 PHP를 설치한 경로를 찾으세요. 예를 들어보겠습니다.
php는 /usr/local/php/bin/php
경로에 설치됩니다. 코드 코드는 다음과 같습니다.
/usr/local/php/bin/php /usr/local/apache/htdocs/a.php
는 a. php 파일
PHP_CLI 프로그래밍은 알아야 합니다
환경이 php_cli 모드를 지원하는지 어떻게 감지하나요?
코드를 복사하세요코드는 다음과 같습니다:
<?php //方法1 if (PHP_SAPI === 'cli') { // ... } //方法2 if (php_sapi_name() === 'cli') { // ... }
PHP_ClI는 어떻게 매개변수를 받나요?
기본적으로 / usr/local/php/bin/ php가 받은 매개변수는 $argv입니다. 이 변수는 수정되었습니다! php 파일에서 var_dump($argv);
는 다음과 같은 결과를 얻습니다.
이 메서드를 일반적으로 사용되는 GET/post 매개 변수 모드로 변환하는 간단한 처리 함수를 작성할 수 있습니다.
간단한 코드:
코드 복사 코드는 다음과 같습니다.
<?php function parseArgs($argv){ array_shift($argv); $out = array(); foreach ($argv as $arg){ if (substr($arg,0,2) == '--'){ $eqPos = strpos($arg,'='); if ($eqPos === false){ $key = substr($arg,2); $out[$key] = isset($out[$key]) ? $out[$key] : true; } else { $key = substr($arg,2,$eqPos-2); $out[$key] = substr($arg,$eqPos+1); } } else if (substr($arg,0,1) == '-'){ if (substr($arg,2,1) == '='){ $key = substr($arg,1,1); $out[$key] = substr($arg,3); } else { $chars = str_split(substr($arg,1)); foreach ($chars as $char){ $key = $char; $out[$key] = isset($out[$key]) ? $out[$key] : true; } } } else { $out[] = $arg; } } return $out; } var_dump($argv); var_dump(parseArgs($argv));exit;
执行结果:
当然实现的方法不止一个,大家可以尝试其他方法实现!
例外关于php的cli还有很多参数可以加入:具体可以参考:http://php.net/manual/en/features.commandline.php
关于定时执行
cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业,周期性作业,比如备份数据 打开/etc/crontab,添加:
复制代码 代码如下:
/usr/bin/php -f /data/htdocs/test.php
关于corntab的详细使用参考51cto专题:Linux计划任务——cron服务
本文参考资料
http://www.php.cn/php-weizijiaocheng-312213.html
http://www.php.cn/php-weizijiaocheng-307840.html
http://www.php.cn/php-weizijiaocheng-307856.html
附注:2012-06-16 增加php_cli编程需知等
相关推荐:
위 내용은 PHP CLI 모드 학습-PHP 명령줄 모드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!