2017-01-16 6 views
1

저는 며칠 동안 걸려 넘어졌습니다. 웹 서비스에서 두 페이지의 PDF를 읽는 imagick 객체 $img이 있습니다. 각 페이지를 jpg 이미지로 저장하려고합니다.Imagick과 PHP를 사용하여 하나 이상의 이미지를 저장할 때 서버가 다운되었습니다

for($i = 0;$i < $num_pages; $i++){ 
    file_put_contents(logfile,"index = ".$i." \r\n\r\n",FILE_APPEND); 
    $img->setIteratorIndex($i); 
    $img->writeImage('workorders/'.$jobSFID.$i.".jpg"); 
} 

file_put_contents(logfile,"test 7 \r\n\r\n",FILE_APPEND); 

루프를 제거하고 한 페이지 만 저장하면 ... 모두 잘됩니다. 그러나 두 페이지를 저장하는 루프에서 로그는 깨지고 결코 test 7 로깅 문에 도달하지 않으며 503 server temporarily unavailable 번을주고 다른 번은 502 proxy error reading from remote server이됩니다.

+0

PHP 스크립트의 최대 실행 시간은 얼마나됩니까? 하나의 jpg 이미지를 렌더링하는 데 얼마나 걸리나요? 스크립트가이 제한 시간에 도달하여 종료 될 수 있습니다. 구성에 따라 설명하는 오류 메시지가 나타날 수 있습니다. – sotn0r

+0

PHP 오류를 활성화 했습니까? 'ini_set ('display_errors', 1);'. 어쩌면 당신은 오류를보고 고칠 수 있습니다. – Red

+0

usleap (10)을 추가하거나 더 많은 imagick이 이미지를 생성하는데 시간이 걸릴 것임 ($ i = 0; $ i <$ num_pages; $ i ++) { usleep (10); file_put_contents (로그 파일, "index =". $ i. "\ r \ n \ r \ n", FILE_APPEND); $ img-> setIteratorIndex ($ i); $ img-> writeImage ('workorders /'.$ jobSFID. $ i. ".jpg"); } –

답변

0

코드에 또 다른 문제가있을 수 있으며, 오류보고를 켜거나 적절한 로그 파일을 보는 것이 드러날 것입니다.하지만 코드는 사용자가 원하는대로 수행하지 않을 수 있습니다.

"iteratorIndex"설정은 이미지 시퀀스에서 현재 이미지가 영향을 미치지 만 실제로 특정 이미지를 분리하지는 않습니다.

Imagick::getImage으로 단일 이미지를 분리하면 단일 페이지 만 쓰게되므로 훨씬 더 신뢰할 수 있어야합니다.

for($i = 0; $i < $num_pages; $i++){ 
    $img->setIteratorIndex($i); 
    $pageImage = $img->getImage(); 
    $pageImage->writeImage('workorders/'.$jobSFID.$i.".jpg"); 
} 
+0

제안 해 주셔서 감사합니다 ...하지만 작동하지 않습니다 .. 오류 디스플레이를 활성화 한 후 서버의 php.log 파일을 확인했습니다 ... 오류 추적 없음 ... –

+0

또한 서버에 쓰기 권한을 부여했습니다. "Workorders"디렉토리 용 ... 운 불문 –