처음에는 PHP에서 file()과 같은 명령을 사용하여 파일을 여는 콘텐츠입니다. 그러나 어떤 시점에서 작업을 수행하는 유일한 방법은 서버에서 셸 명령을 실행하고 일부 유형의 출력을 다시 얻을 수 있는 것입니다. 예를 들어 특정 디렉터리에 있는 파일 수를 알아야 할 수 있습니다. 또는 로그 파일 그룹에 기록된 줄 수를 알아야 할 수도 있습니다. 또는 해당 파일을 다른 디렉터리로 복사하거나 rsync를 사용하여 다른 위치로 전송해야 할 수 있습니다. 이 예제는 Windows뿐만 아니라 유닉스의 많은 버전에서 잘 작동해야합니다. 시스템 – 외부 프로그램을 실행하고 출력을 표시 우리는 간단한 예로 시작합니다. 로컬 운영 체제에서 실행하려는 명령을 제공합니다. 이 예제에서는 라는 디렉터리 라는 데이터를 만듭니다.

이 디렉터리현재 작업 경로에 만들어집니다. /var/data와 같이 경로를 명시적으로 지정할 수도 있습니다. 또 다른 유사한 기능은 system()입니다. system() 기능은 에코 나 인쇄를 사용하지 않고 직접 출력을 표시합니다. 이 예제에서는 ls 명령을 다시 실행합니다. 우리는 모든 준비가 인쇄 출력을 보았다하지만 난 인쇄 출력에 대한 자세한 설명할 수 있습니다. exec() 함수 출력 또는 반환은 에코로 인쇄할 수 있지만 인쇄된 부분은 마지막 줄에 불과합니다. 그래서 멀티 라인 출력에서 우리는 에코와 출력을 볼 수 없습니다 . 전체 출력을 보려면 아래에 설명 될 system() 함수를 사용해야합니다. 에코를 사용하는 것은 반환 값을 얻을 수있는 신뢰할 수있는 방법이 아닙니다. 변수를 사용하여 반환 값을 설정하고 원하는 대로 사용할 수 있습니다.

Int 이 예제에서는 프로세스 반환 값을 v 변수로 설정합니다. 사용자 제공 데이터를 이 함수에 전달할 수 있도록 허용하는 경우 escapeshellarg() 또는 escapeshellcmd()를 사용하여 사용자가 시스템을 속여 임의 명령을 실행하도록 할 수 없도록 합니다. 예를 들어 파일 목록을 인수로 허용하는 전송 프로그램을 실행하는 경우 각 파일 옆에 확인란이 있는 모든 파일을 행에 나열할 수 있습니다. 사용자는 파일을 선택하고 선택을 취소하고 제출을 클릭하여 rsync 셸 스크립트를 활성화할 수 있습니다. 파일 목록을 입력하거나 일종의 정규식을 사용할 수 없습니다. 또한 시스템() 호출은 PHP가 서버 모듈로 실행되는 경우 각 출력 줄 이후에 웹 서버의 출력 버퍼를 자동으로 플러시하려고 시도합니다. 이제 알림 시스템을 테스트할 차례입니다. 다음과 같은 창이 표시됩니다: 목록 10에 표시된 system() 명령은 하이브리드입니다.

passthru (처럼), 그것은 외부 프로그램에서 직접 수신 하는 모든 것을 출력. exec()과 마찬가지로 마지막 줄도 반환하고 반환 코드를 사용할 수 있게 합니다. 이 실시간 알림 시스템은 당신과 당신의 친구가 이러한 소셜 채널에서 할 모든 행동을 추적합니다. 알림은 이러한 플랫폼의 실시간 참여 기능에서 큰 부분을 차지합니다. 온라인 상태가 아니더라도 이러한 알림을 받을 수 있습니다. PHP 알림 시스템은 바닐라 PHP와 자바 스크립트의 혼합을 사용하여 쉽게 구축 할 수 있습니다. 이 시스템은 PHP 기반 응용 프로그램에서 실시간 알림을 제공합니다. 지금까지 사용자가 단추를 누르거나 링크를 클릭하면 PHP가 스크립트를 실행하는 사용자 생성 이벤트에 대해 설명했습니다. 또한 cron 또는 다른 스케줄러를 사용하는 독립 실행형 PHP 스크립트를 실행하여 흥미로운 효과를 얻을 수도 있습니다. 예를 들어 백업 스크립트가 있는 경우 cron을 통해 독립 실행형으로 실행하거나 PHP 스크립트로 래핑한 다음 실행할 수 있습니다. 왜 그렇게 하시겠습니까? 그것은 중복 및 낭비 소리, 오른쪽? 아니요, exec() 또는 passthru()를 통해 백업 스크립트를 실행할 수 있다고 생각하면 반환 코드를 기반으로 몇 가지 동작을 수행합니다.