php变量能存储的数据大小_存储字符串时Php变量的大小限制是多少?

情况就是这样:

我有一个名为myDB.sql的2Gb转储文件.它是一个转储文件,用于删除现有数据库并使用视图和触发器创建新数据库.所以我有很多代码行的字符串myDB_OLD.

我想将这些字符串出现更改为myDB_NEW.

我可以使用notePad轻松地做到这一点.但记事本不会打开2Gb文件.

我所做的是一个

PHP代码,它逐行读取并查找并替换我想要的字符串.

这是代码:

$myfile2 = fopen("myDB.sql","r") or die("Unable to open file!");//Reads the file

while (!feof($myfile2)) {//Pass trough each line

$str=fgets($myfile2);//Store the line inside a variable

if (preg_match("/myDB_OLD/",$str)) {//If the string I want to change exists - replace it and conacatenate

$newStr .= str_replace("myDB_OLD","myDB_NEW",$str);

}

else {//If not concatenate it

$newStr .=$str;

}

}//End of while

fclose($myfile2);

//Save the newStr in a new file named

$myfile = fopen("newDB.sql","w") or die("Unable to open file!");

fwrite($myfile,$newStr);

echo "finished";

此代码检索文件的每一行更改字符串,在变量中连接并创建一个新文件.它应该有效,但事实并非如此.我不知道为什么.我正在使用xdebug来找出问题所在,但没有运气.

所以我改变了方法.

我没有将每一行保存在变量中,而是将其直接保存在文件中,并且效果很好.

这是新代码:

$myfile = fopen("newDB.sql","w") or die("Unable to open file!");//Creates a new file "newDB.sql"

$myfile2 = fopen("myDB.sql","r") or die("Unable to open file!");//Reads the file

while (!feof($myfile2)) {//Pass trough each line

$str=fgets($myfile2);//Store the line inside a variable

if (preg_match("/myDB/",$str)) {//If the string I want to change exists - replace it . (Do not concatenate)

$strRep=str_replace("myDB",$str);

}

else {

$strRep =$str;

}

fwrite($myfile,$strRep);// Add the new line to the file "newDB.sql"

}//End of while

fclose($myfile);

fclose($myfile2);

echo "finished";

好吧,我解决了我的问题,但它提出了一个想法.第一个代码有什么问题?

我认为问题是要存储在PHP变量2Gb中的信息量.

那么,PHP变量的大小是否有限制来存储值,在本例中是一个字符串?

如果是,我该如何检查或更改它?

任何PHP.ini变量?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值