2016-07-08 6 views
-3

私はpdfにeclipse birtレポートからpdfを保存するPHPスクリプトを持っています。 私はimputとしてファイルコンテンツを取得しています。 birtレポートpdfには作成に時間がかかります。PHP:put_file_content not working

私はこれが問題だと思います。以下では

、スクリプト:

<?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

がかどうかをチェックするように、いずれかの基本的なデバッグを行って

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

はまた、デフォルトのタイムアウトをチェックするのfile_get_contentsの要求のタイムアウトを設定します'$ pdf'は実際にpdfデータを含んでいますか? 'file_get_contents()'の戻り値をチェックしましたか?あなたのコードのどれもが現実の世界のために何らかの手当てをすることはありません:物事は失敗し、あなたは今も何もしないと仮定しています。 –

+0

問題は、何も変更されていないことです... 約。 2週間、pdfが動作しています。 – Sebascho

+0

PHPでのHTTP呼び出しのデフォルトのタイムアウトは60秒です。 pdfの生成にそれよりも時間がかかる場合、file_get_contentsはデータなしで終了します。それが速くなったら、それは突然成功し始めるでしょう。いずれにしても、タイムアウトを無効にする方法については@Daniel Lichtenbergの回答を参照してください。 –

答えて

0

file_put_contents()は、それが書き込みに成功した場合(表すバイトが書かれている)数値を返し、書き込みが成功しなかったときfalseを返します。書き込みが成功しなかった場合、Webサーバーはディレクトリに書き込む権限を持っていない可能性があります。ディレクトリが書き込み可能であることを確認してください。

$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のファイルコンテンツを取得する際にタイムアウトが発生していると思います...レポートの生成にはおよそかかります。 10分 – Sebascho

1

てみ

echo ini_get("default_socket_timeout");