PHP:如何检查当前是否正在写入文件

假设我有一个
PHP脚本,它将提供一个大文件,我目前正在上传这个大文件,例如FTP.

如果上传完成,有没有办法可以检查我的PHP脚本?例如,有一种方法可以检查当前是否正在写入文件或类似的文件?

更新:之前应该提到这一点,但我不是在谈论通过上传脚本上传我正在谈论的例如通过FTP或SFTP等其他方式上传大型pdf文件.

最佳答案 您可以在上传脚本中使用一个临时文件(在temportantly目录中),如果上传完成,您可以简单地将文件移动到具有良好文件名的最终位置.

这是此问题的常见解决方案.

为了得到temportantly文件(环境独立)使用PHP函数:

resource tmpfile ( void )

您可以在http://pl.php.net/manual/en/function.tmpfile.php找到它的文件记录
此函数将句柄返回到新的干净临时文件.

但是如果你使用这个函数,你必须在关闭文件之前复制文件,因为当你调用fclose(handle)时这个文件被删除了.为了确保文件缓冲区是干净的,你可以在最后调用fflush(句柄).

或者,如果您不想使用tmpfile(void)函数,您可以手动执行此操作.

string tempnam ( string $dir, string $prefix )

前缀是文件的前缀,可以轻松地将她分组为删除或其他内容.调用此函数以获取类型目录中的唯一文件,因为目录在您的环境中获取临时目录,您可以通过调用以下命令获取:

string sys_get_temp_dir ( void )

然后当你有自己的tempfile时,写入它上传数据并关闭.
使用以下方法将此文件复制到最终位置:

bool copy ( string $source, string $dest [, resource $context ] )

并删除你的临时文件,以便在你的环境调用中获得干净:

bool unlink ( string $filename [, resource $context ] )
点赞