PHP的fwrite()函数是用于向已打开的文件写入数据的核心函数,支持二进制安全操作7。以下是详细解析:
1. 函数定义与语法
int fwrite(resource $handle, string $string [, int $length])
参数:
$handle:必需,由fopen()打开的文件指针资源。$string:必需,要写入的字符串内容。$length:可选,限制写入的最大字节数(默认写入完整字符串)。返回值:成功时返回写入的字节数,失败返回
FALSE。
2. 核心特性
二进制安全:可处理文本和二进制数据(如图像)。
写入控制:
若指定
$length,则在写入指定字节或字符串结束时停止。追加模式(
"a")下写入是原子操作(除非数据超过文件系统块大小)。跨平台兼容:Windows系统需在
fopen()模式中添加"b"(如"wb")以避免换行符转换问题。
3. 典型使用流程
打开文件:
$handle = fopen("log.txt", "w"); // "w"模式覆盖写入
if ($handle === false) die("文件打开失败");写入数据:
$bytes = fwrite($handle, "Hello World"); if ($bytes === false) echo "写入失败";
关闭文件:
fclose($handle); // 必须显式关闭:ml-citation{ref="6,12" data="citationList"}。4. 模式与行为
5. 注意事项
错误处理:需检查
fwrite()返回值,避免静默失败。性能优化:频繁写入时,批量操作比多次调用更高效。
换行符:手动添加
\n实现换行写入。
6. 对比file_put_contents()
fwrite():需显式打开/关闭文件,适合精细控制或大文件分块写入。
file_put_contents():单函数完成写入,适合简单场景。
示例:追加日志
$handle = fopen("app.log", "a");
fwrite($handle, date("Y-m-d H:i:s") . " - User logged in\n");
fclose($handle);此代码以追加模式记录带时间戳的日志。