999995:98xDtLjaeD8MG9ywifegZvRRQzVBZbbw,234223,0.13
999996:98xDtLjaeD8MG9ywifegZvRRQzVBZbbw,84947,0.79
999997:98xDtLjaeD8MG9ywifegZvRRQzVBZbbw,6489,0.38
2.测试 fwrite
复制代码
代码如下:
<?php
$userCount
= 1000;
$itemCount
= 1000;
$file
= 'ratings.txt';
file_exists
(
$file
) &&unlink(
$file
);
$fp
= @
fopen
(
$file
, 'ab');
if
(!
$fp
)
die
("Open $file failed");
$timeStart
= microtimeFloat();
for
(
$i
= 0;
$i
<
$userCount
;
$i
++) {
$uid
=random(32);
for
(
$j
= 0;
$j
<
$itemCount
;
$j
++) {
$itemId
= mt_rand(1, 300000);
$rating
=
$j
== 0 ? 1 : mt_rand(1, 100) / 100;
$line
= sprintf("%s,%d,%s\n",
$uid
,
$itemId
,
$rating
);
fwrite(
$fp
,
$line
);
$k
++;
}
}
if
(
$fp
) @fclose(
$fp
);
$timeEnd
= microtimeFloat();
echo
sprintf("Spend time: |%s| second(s)\n",
$timeEnd
-
$timeStart
);
?>
测试结果
:
写一百万行记录,
10 秒左右写完,对于 PHP 来说,速度算不错了。这是在我的个人电脑上
面测试的,如果在生产机上测试,可能速度还要快一些。
D:\myphp\research>php test2.php
Spend time: |10.764221191406|second(s)
用
fwrite 写入的数据是完整的
999997,QOvcZYFJFlFHjiGyGxAc615kOXdX3Yii,246982,0.03
999998,QOvcZYFJFlFHjiGyGxAc615kOXdX3Yii,240160,0.39
999999,QOvcZYFJFlFHjiGyGxAc615kOXdX3Yii,46296,0.61
1000000,QOvcZYFJFlFHjiGyGxAc615kOXdX3Yii,26211,0.14
3.总结
如果要往文件里面写入大量的数据,则推荐用
fwrite,不要用
file_put_contents
。在高并发的
请求中也建议用
fwrite。