2017-09-05 10 views
0

I 다음과 같은 문제를 가지고PHP가 스킵 함수 호출 출력

require('drawchart.php'); 

if (file_exists('drawchart.php')){ cwrapper();} 

cwrapper에서 'chart.png'를 이용하여 명령;

cwrapper는 MySQL에 액세스하여 Chart를 그리는 drawchart.php의 함수입니다. 이 함수는 자체적으로 test.php에서 완벽하게 작동하지만 주 프로그램에서 차트를 생성하는 것을 멈추고 왜 그냥 작동하지 않는지에 대해 당혹 스럽다.

성공을 위해 파일을 기다릴 필요가 있는지 확인하기 위해 sleep (30)을 도입 해 보았습니다. 하지만 그건 도움이되지 않습니다. 다음 두 번째 명령은 출력 파일 chart.png를 절대 선택하지 않습니다. 디렉토리는 두 경우 모두 절대 경로이므로 문제는 아닙니다.

기존의 chart.png를 선택하지만 if 호출에서 생성해야하는 업데이트 된 차트는 없습니다. cwrapper에 대한이 호출을 건너 뛰는 것 같습니다.

cwrapper가 pchart를 사용하여 차트를 그리는 것은 테스트 스크립트에서 완벽하게 수행합니다.

어떻게이 문제를 해결할 수 있습니까? 더 좋은 방법이 있나요?

+0

먼저, **이 ** 호출 확인'cwrapper()'기능을합니다

귀하의 코드는 다음과 같이 간단해야한다. – axiac

+0

무슨 뜻입니까? 그것이 달렸다고 나에게 보여주는 에코. – NoobPython

+0

또는'else' 브랜치에 어떤 것을 echo하면'cwrapper()'함수가 호출되지 않았다는 것을 알려줍니다. 또한 내 대답을 읽으십시오. – axiac

답변

0

먼저 cwrapper() 기능 이 호출되었는지 확인하십시오.

현재 디렉토리에 존재하지 않는 경우, drawchart.php의 경로를 제공하지 않기 때문에, php.iniinclude_path에 지정된 경로에 require() 검색은 (는 런타임시 변경 될 수 있습니다).

file_exist() 운 좋게도 현재 디렉토리에있는 파일 만 찾을 수 있습니다.

이 상황을 처리하는 가장 좋은 방법은 파일이 존재하는 경우 통화 할 함수가 존재하는 경우 만 확인 (그것이 require() 핸들을하자?에 대해 누가 관심)을 확인하지 않는 것입니다 :

require 'drawchart.php'; 

if (function_exists('cwrapper')) { 
    cwrapper(); 
} 

실제로 require은 파일을로드 할 수없는 경우 스크립트를 종료하기 때문에 함수가 존재하는지 확인하지 않아도됩니다. 필요한 파일에 정의 된 경우 require() 문이 반환 된 후 존재합니다 (그렇지 않으면 스크립트가 중단됩니다). 모든

require 'drawchart.php'; 

cwrapper(); 
+0

예를 들어 출력 chart.png를 생성하는 함수를 호출 할 때. 이 파일을 사용하는 다음 함수 호출에서이 파일을 건너 뛰거나 사용할 수없는 이유가 있습니까? 그 파일이나 그와 비슷한 것을 쓰는 데 지체가있을 수 있습니까? 그 동안 나는 file_exists없이 시도 할 것입니다 – NoobPython

+0

당신 말이 맞습니다. 나는 {}을 사용하여 if 문 안에 다음 명령을 넣으려고했다. 그리고이 명령에 도달하지도 않았습니다. 즉, php 파일이 런타임 PHP와 동일한 디렉토리에 존재하더라도 if 문이 FALSE라고 가정합니다. 한 걸음 더 가깝게 !!감사합니다 – NoobPython

+0

지금은 마치 당신이 아주 간단히 말해서 shebang없이 말하고있는 것처럼 나는 그것을 실행하고 있습니다. 알려 드리겠습니다. 이 코드는 완성되는 데 오래 걸립니다. 모든 답변을 주셔서 감사합니다. 너희들 대단하다! – NoobPython