假设我有一个PHP脚本,它将提供一个大文件,我目前正在通过例如FTP上传这个大文件。
如果上传完成,有没有办法可以检查我的PHP脚本?例如,有一种方法可以检查当前是否正在写入文件或类似的文件吗?
更新:之前应该提到这一点,但我不是在谈论通过上传脚本上传我正在谈论的例如通过FTP或SFTP等其他方式上传大型pdf文件
答案 0 :(得分:2)
您可以在上传脚本中使用一个临时文件(在temportantly目录中),如果上传完成,您可以简单地将文件移动到具有良好文件名的最终位置。
这是此问题的常见解决方案。
对于获取temportantly文件(环境独立)使用PHP函数:
resource tmpfile ( void )
您可以在http://pl.php.net/manual/en/function.tmpfile.php找到它的文件记录 此函数将句柄返回到新的干净临时文件。
但是如果您使用此功能,则必须在关闭文件之前复制文件,因为在调用fclose(handle)
时此文件已被删除。为了确保文件缓冲区是干净的,您可以在结束时调用fflush(handle)
。
或者,如果您不想使用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 ] )
答案 1 :(得分:0)