0

pdfサーバーへの絶対パスからファイルをダウンロードする必要がある状況で立ち往生していますが、それができません。すべてのプロセスがバックグラウンドで動作しているため、フロント ユーザーがバックグラウンドで何が起こるかを確認したくありません。

誰でも解決策を提供できますか? とても単純かもしれませんが、私は立ち往生しています。

4

3 に答える 3

2

コピーを使用できます

$pdf = "http://wwww.somesite.com/something.pdf";
$pdf = str_replace(" ", "%20", $pdf);
$savedpdf = "/rootsomething/savedpdf/saved.pdf";
if(copy($pdf, $savedpdf)){
//The file was copied correctly 
}
于 2013-01-25T06:36:01.743 に答える
0

はい、使用できますPHP CURLが、外部リソースからファイルを受信するまでブロックされます。ファイルが少し重い場合は、適切なオプションではありません。cronjobそのシナリオでスクリプトを実行するか、 multirequestのようなマルチスレッドライブラリを使用することをお勧めします

これはhttpリクエストを作成するための必要最低限​​のコードスニペットです。私はそれをテストしていませんが、洞察を得て、自分で微調整/デバッグすることができます。

    function saveCompleteRequestToFile(MultiRequest_Request $request, MultiRequest_Handler $handler) {
    $filename = preg_replace('/[^\w\.]/', '', $request->getUrl());
    file_put_contents('directory_path_here' . $filename, $request->getContent());
}

$mrHandler = new MultiRequest_Handler();
$mrHandler->onRequestComplete('saveCompleteRequestToFile');

$headers = array();
$headers[] = 'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5';
$headers[] = 'Cache-Control: no-cache';
$headers[] = 'Connection: Keep-Alive';
$headers[] = 'Keep-Alive: 300';
$headers[] = 'Accept-Charset: UTF-8,Windows-1251,ISO-8859-1;q=0.7,*;q=0.7';
$headers[] = 'Accept-Language: ru,en-us,en;q=0.5';
$headers[] = 'Pragma:';
$mrHandler->requestsDefaults()->addHeaders($headers);

$options = array();
$options[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12';
$mrHandler->requestsDefaults()->addCurlOptions($options);

$request = new MultiRequest_Request('http://somedomain/path/file.pdf');
$mrHandler->pushRequestToQueue($request);
$mrHandler->start();
于 2013-01-25T06:43:22.000 に答える
0

PHP CURLなどの HTTP クライアント ライブラリを使用する

于 2013-01-25T06:28:51.157 に答える