处理大型字符串时,PHP脚本停止工作

Yas*_*u G 2 php string file-io file large-data

我正在测试一个php脚本来创建包含大量数据的csv文件.这是我执行此任务的方式:

$csvdata = "ID,FN,LN,ADDR,TEL,PRO\n
            1,fn1,ln1,addr1,tel1,pro1\n...etc,";
$fname = "./temp/filename.csv";
$fp = fopen($fname,'w');
fwrite($fp,$csvdata);
fclose($fp);
Run Code Online (Sandbox Code Playgroud)

我注意到当字符串($ csvdata)包含100,000个数据行时,脚本运行正常.但当它获得更多的10,00,000个数据行时,它会在我构建字符串$ csvdata的中间停止(我通过连接for循环中的数据,来自数据库的数据来构建$ csvdata字符串).

当我们使用大字符串值时,有人能让我知道出了什么问题吗?

谢谢亲切的问候

cod*_*ict 5

我通过连接for循环中的数据,来自数据库的数据来构建$ csvdata字符串.

从此我收集到您正在准备将整个文件写为字符串并最终将其写入文件.

如果是这样,那么这种方法并不好.请记住,字符串存在于主内存中,每次追加时,都会占用更多内存.解决此问题的方法是逐行写入文件,从数据库中读取记录,如果需要,可以转换/格式化,准备CSV行并将其写入文件.