我知道,如果我们使用像nodejs
这样的异步网络服务器,我们有API调用来异步检索文件而不锁定文件。PHP 如何处理这个问题?例如,如果同时有 1000 个请求传入,fopen
不会锁定文件吗?
当有一个 HTTP 请求并且响应将是一个文件时,
不应使用 fopen()
和 fread()
检索文件。
即使 fopen 和 fread 不会阻止对文件的多次访问,最好使用单个命令来完成:
简单和文件打开时间最短。
示例 1(固定文件名)
<?php
readfile('/home/user/file_to_read');
?>
示例 2(传递的文件名
<?php
readfile($_POST['filename']);
?>
这会读取文件并将其回显给调用方。 它也是二进制安全的。
如果文件仅包含字符串数据,则可以使用 file_get_contents()。
<?php
echo file_get_contents($_POST['filename']);
?>
fopen()
将文件加载到内存中,从而允许其他请求也对其进行修改。
您混淆了它被锁定到流程中。 fopen()
会阻止其他进程打开该文件。