确认 PHP 的 `file_put_contents()` 何时完成

在我的 Laravel 应用程序中,我使用流将大文件(> 1GB)下载到我的服务器以进行额外处理:


    $stream = Storage::disk('google')->getDriver()->readStream($file['path']);

    file_put_contents(public_path("files/{$filename}.tiff"), stream_get_contents($stream));


    if (file_exists(public_path("files/{$filename}.tiff"))) {

        ConvertTIFF::dispatch();

        return;

    }

问题是,因为我正在流式传输文件,文件本身在流式传输过程实际完成之前很久就已创建。所以我的file_exists()支票会经常ConvertTIFF在文件完成之前触发我的事件。


有没有更简单的方法来检查file_put_contents()流处理是否完成?或者有没有办法让进程阻塞,所以在文件完全下载之前触发之前没有事件的危险?


皈依舞
浏览 99回答 1
1回答

慕慕森

file_put_contents()返回写入文件的字节数,如果不成功则返回 False。所以你可以像这样检查状态$status = file_put_contents(public_path("files/{$filename}.tiff"), stream_get_contents($stream));/*if ($status) {    echo "success";} else {    echo "failed";}*/return $status;
打开App,查看更多内容
随时随地看视频慕课网APP