Detecting whether a file is complete or partial in PHP

前端 未结 5 1095
时光说笑
时光说笑 2021-02-19 22:24

In this system, SFTP will be used to upload large video files to a specific directory on the server. I am writing a PHP script that will be used to copy completely uploaded file

5条回答
  •  灰色年华
    2021-02-19 22:55

    Simple

    If you just want a simple technique that will handle most use cases - write a process to check the last modified date or (as indicated in the question) the file size and if it hasn't changed in a set time, say 1 minute, assume the upload is finished and process it. Infact - your question is a near duplicate of another question showing exactly this.

    Robust

    An alternative to polling the size/last modified time of a file (which with a slow or intermittent connection could cause an open upload to be considered complete too early) is to listen for when the file has finished being written with inotify.

    Listening for IN_CLOSE_WRITE you can know when an ftp upload has finished updating a specific file.

    I've never used it in php, but from the spartan docs it looks that that aught to work in exactly the same way as the underlying lib.

    Make FTP clients work for you

    Take into account how some ftp programs work, from this comment:

    it's worth mentioning that some ftp servers create a hidden temporary file to receive data until the transfer is finished. I.e. .foo-ftpupload-2837948723 in the same upload path as the target file

    If applicable, from the finished filename you can therefore tell if the ftp upload has actually finished or was stopped/disconnected mid-upload.

提交回复
热议问题