2009-11-05 3 views
2

나는 누군가가 웹 페이지에 연결하여 즉시 다운로드 할 파일을 생성 할 수있게 해주는 도구를 쓰고있다. PHP fwrite 대 출력 파이핑

내가하면 fopen 또는에 fwrite 같은 PHP 함수를 사용할 수 있습니다, 이러한 파일을 작성하려면, 아니면 같은 출력을 생성하는 시스템 호출로 호출 할 수있는 스크립트를 만들 수 있습니다

PHP downloadGen.php> filetocreate을 .xml

솔루션의 수정 버전은 더 많은 메모리를 사용하며 파이프 버전보다 느립니다. 누구든지 다운로드 생성을 시스템 호출로 실행하는 데 문제가 있는지 확인하십시오. 동시에 얼마나 많은 전화를 걸 수 있는지에 대한 제한이 있습니까? 어쨌든

, 나는

답변

0

... 사람이 비슷한 경험을 가지고 있으며, 몇 가지 조언을 제공 할 수 있습니다 (PHP 5.0부터 사용 가능) 가장 쉽고 효율적인 방법을 간단하게 삽입 할 file_put_contents를()를 사용하는 것입니다 바라고 있어요 내용을 파일에 저장합니다. 첫 번째 매개 변수로 파일 이름을 지정하고 파일에 입력 할 데이터의 문자열 (이진 또는 단순 텍스트 - 이진 안전 함수)을 지정합니다.

그러면 지정한 경로에 파일이 생성됩니다. 당신이하지 않는

그리고

, 당신의 두 번째 점을 대답 : 쓰레기 사용자의

  1. 엄청난 수의, 당신은 지속적으로 거대한 파일을 작성하는
  2. , 또는
  3. 서버입니다

    그러면 괜찮을거야.

+0

file_put_contents를 사용할 때의 문제는 파일에 출력하기 전에 변수에 전체 출력을 저장해야한다는 것입니다. –

1

솔루션 의에 fwrite 버전은 더 많은 메모리를 사용하고 파이프 버전

확실보다 느린도? 나는 도넛에 달러를 걸 겠지만 그것은 반대입니다 (그러나 무시할 수있는 방식으로). 그리고 여러분은 단지 잘못된 것을 측정하는 것입니다.

메모리 -

서버에서 별도의 프로세스를 만드는 것보다 적은 메모리를 소비해야하면 fopen /에 fwrite를 통해 처리중인 파일을 구축. 아마도 스크립트가 소비하는 메모리 양을 측정하고 있기 때문에 다른 방법이라고 생각할 것입니다. 그러나 php downloadGen.xml 시스템 호출이 다른 프로세스를 시작하고 있습니다. PHP 코드는 웹 서버 바인딩 프로세스에서 수행 한 것처럼 많은 메모리를 사용하고 cli PHP 프로세스의 모든 오버 헤드를 사용합니다. 차이는 무시해도 좋습니다.

"속도"-

속도는 동일합니다. PHP 인터프리터를 시작하면 프로세서 사이클이 소모됩니다. 이 모든 것을 동 기적으로 수행하는 경우 생성/출력 코드를 주 스크립트에 넣는 것이 더 빠릅니다. 그러나 간신히.