>백엔드 개발 >PHP 튜토리얼 >PHP CLI 모드 학습-PHP 명령줄 모드

PHP CLI 모드 학습-PHP 명령줄 모드

不言
不言원래의
2018-04-08 15:30:2412358검색

저는 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 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 === &#39;cli&#39;)
{
   // ...
}
//方法2
if (php_sapi_name() === &#39;cli&#39;)
{
   // ...
}



PHP_ClI는 어떻게 매개변수를 받나요?
기본적으로 / usr/local/php/bin/ php가 받은 매개변수는 $argv입니다. 이 변수는 수정되었습니다! php 파일에서 var_dump($argv);

는 다음과 같은 결과를 얻습니다.

PHP CLI 모드 학습-PHP 명령줄 모드

이 메서드를 일반적으로 사용되는 GET/post 매개 변수 모드로 변환하는 간단한 처리 함수를 작성할 수 있습니다.

간단한 코드:

코드 복사 코드는 다음과 같습니다.

<?php 
function parseArgs($argv){ 
array_shift($argv); 
$out = array(); 
foreach ($argv as $arg){ 
if (substr($arg,0,2) == &#39;--&#39;){ 
$eqPos = strpos($arg,&#39;=&#39;); 
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) == &#39;-&#39;){ 
if (substr($arg,2,1) == &#39;=&#39;){ 
$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 모드 학습-PHP 명령줄 모드

当然实现的方法不止一个,大家可以尝试其他方法实现!

例外关于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编程需知等

相关推荐:

vue cli升级webapck4的使用方法

위 내용은 PHP CLI 모드 학습-PHP 명령줄 모드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.