2016-07-08 7 views
-3

У меня есть php-скрипт, который сохраняет pdf-файл из отчета eclipse birt в pdf. Я использую получение содержимого файла как imput. В отчете birt pdf требуется некоторое время для создания.PHP: put_file_content не работает

Я думаю, что это проблема.

Далее сценарий:

<?php 
$rname = 'reportname'; 
$wname = $rname . '_' . date('d.m.Y') . '.pdf'; 
$pdf = file_get_contents("http://xxx.xxx.xxx.x:8080/Birt/run?__report=" . $rname . ".rptdesign&sample=my+parameter&__format=pdf"); 
file_put_contents('/tmp/report' . $wname, $pdf); 
?> 

В чем проблема?

Спасибо за вашу помощь :)

+0

сделать любую основную отладку, как проверка, если '$ pdf' фактически содержит данные в формате pdf? проверили возвращаемое значение из 'file_get_contents()'? ни один из ваших кодов не делает НИКАКОЙ надбавки за реальный мир: все терпит неудачу, и вы просто ничего не предпринимаете. –

+0

Проблема в том, что ничего не изменилось ... Для прибл. две недели, PDF работает. – Sebascho

+0

Тайм-аут по умолчанию для HTTP-вызовов в PHP составляет 60 секунд. Если для генерации PDF требуется больше времени, то в файле file_get_contents не будет данных. Если он ускорился, тогда он вдруг начнет преуспевать. В любом случае, см. Ответ @Daniel Lichtenberg о том, как переопределить этот тайм-аут. –

ответ

0

file_put_contents() возвращает числовое значение (представляющее записанные байты), если это удалось с письменной формой, и будет возвращать false, когда запись не была успешной. Если запись не удалась, веб-сервер может не иметь права на запись в каталог. Убедитесь, что каталог доступен для записи.

$result = file_put_contents('/tmp/report' . $wname, $pdf); 

if(is_numeric($result) && $result > 0) { 
    // write was successful 
} else { 
    // write was NOT successful 
} 

Соответствующий PHP документ: http://php.net/manual/en/function.file-put-contents.php

+0

Разрешение правильное, но я думаю, что есть тайм-аут от php get file content ... генерация отчета занимает ок. 10 минут – Sebascho

1

Попытки установить тайм-аут запроса для file_get_contents

file_get_contents('http://www.example.com/', false, stream_context_create(Array("http" => Array("method" => "GET", 
    "timeout" => 600, 
    )))); 

Также проверьте тайм-аут по умолчанию

echo ini_get("default_socket_timeout");