다른 개발자의 CLI PHP 스크립트를 실행의 일부로 호출해야하는 웹 서비스 엔드 포인트가 있습니다. 의사 코드과 같이 : 이제
function startCLI($input, $output){
$cmd = escapeshellarg('php bin/startcli.php $input $output');
exec($cmd, $output, $ret);
if ($output){
print_r($output[0]);
}
}
, 당신이 요구 될 수 있습니다 왜 $_POST['var']
clistart.php
스크립트에 전달하지?
글쎄, 당신은 당신이 해외에서 당신의 레거시 코드를 얻었을 때 당신이 지불하는 것을 얻습니다. 때로는 시스템을 분해하고 다시 사용하는 데 걸리는 시간이 제가 구현해야 할 시간보다 큽니다. 전체 솔루션.
그럼 clistart.php
스크립트에 새 변수를 추가 할 수 없다는 것을 정당화하자. 지옥, 학구적 인 운동으로 받아 들여. 웹에서 요청한 PHP 스크립트에서 실행 된 CLI 스크립트가 실행을 위해 $ _GET 또는 $ _POST에 액세스 할 수 있습니까?
업데이트 : $ _ENV와 getenv()
및 putenv()
에 키를 추가하려고 시도했지만 그 결과는 같습니다. 현재 실행중인 스크립트와 해당 작업을 QUEUE하는 자식 스크립트의 환경을 업데이트 할 수 있지만 그런 다음 작업은 자체 $ _ENV 컨텍스트가있는 지속성 프로세스에 의해 실행되므로 해당 변수를 지속적 프로세스의 컨텍스트에 전달하는 방법이없는 것처럼 보입니다.
다른 아이디어가없는 한 데이터베이스 또는 파일 터치를 사용해야합니다.
(print_r ($ GLOBALS)) 이것을 테스트하는 것은 쉬운 일이 아니며 질문을 작성하고 답변을 기다리는 데 소요되는 시간보다 확실히 적은 시간을 소비합니다. –
나는 아직도 뭔가를 놓치고있다. 커맨드 라인에서'clistart.php'를 사용하는 다른 방법의 예를 들려 줄 수 있습니까? –