>  기사  >  백엔드 개발  >  spb mobile shell php는 쉘 파이프에서 전송된 내용을 읽습니다.

spb mobile shell php는 쉘 파이프에서 전송된 내용을 읽습니다.

WBOY
WBOY원래의
2016-07-29 08:41:581052검색

안녕하세요, 무샤님!
Rainbird가 짧은 메시지를 보냈습니다.
데몬을 실행하는 배경을 많이 썼는데, 지금은 파이프를 통해 콘텐츠를 전달하고 싶은데 어떻게 해야 하는지 모르겠습니다. 이를 달성하려면 echo " aaaa" |a.php, a.php와 유사하게 에코 콘텐츠를 얻는 방법에 대한 조언이 있습니까?
오늘 메시지를 받았는데 해결책을 공유하고 싶습니다. :
실제로 쉘의 | 위의 내용은 이전 것의 표준 출력이 다음 것의 표준 입력으로 사용됨을 나타냅니다. 구현은 파이프를 통해 구현되지만
PHP 코드를 작성할 때 기본 작업을 알 필요는 없습니다. 표준 입력으로 직접 읽을 수 있습니다.
다음은 실험적인 코드입니다.

코드를 복사하세요 코드는 다음과 같습니다.


$fp = fopen("php://stdin", "r")
$s = ''
while(!feof($fp) ))
{
$s .= fgets($fp, 128)
var_dump($s)
fclose($fp)?> 🎜>

테스트 방법 :



코드 복사

코드는 다음과 같습니다.ls -lh | php php_read_pipe.php


Rainbird는 또한 더 간단한 코드를 제공합니다:
file_get_contents('php://stdin')

전송할 데이터가 많은 경우 일반적으로 4K마다 한 번씩 전송됩니다.
이체가 완료될 때까지. 단순히
file_get_contents('php://stdin')를 사용하는 것만으로는 불가능할 수도 있습니다. 그렇다면 나는 언제나 기다리고 있을 것이다.
따로 처리하면 일정량 읽어서 일부만 처리하면 됩니다. 그런 다음 메모리의 일부를 해제합니다.
예를 들어 모든 파일을 순회하고 싶습니다. 이렇게 처리할 수 있습니다.
find / | php php php_read_pipe.php
구체적인 상황에 맞춰 분석하겠습니다.
위 내용은 spb 모바일 쉘의 내용을 포함하여 쉘 파이프라인에서 전송된 내용을 spb 모바일 쉘 PHP가 읽는 방법을 소개한 내용입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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