猿问

PHP解包溢出变量内存限制

我目前尝试以 hex 格式回显 DLL 文件的原始字节,解包函数溢出了可变内存限制(我的托管服务 atm 无法设置),是否有任何方法可以将其按部分读取为 3 个或更多变量,或者输出字节并回显这些的其他方法?


文件大小约为 1,98MB(1.990.656 BYTES)(是的,我知道 php 中的缓冲区要大得多)。


发生以下错误:致命错误:允许的内存大小为 67108864 字节已用完(尝试分配 67108872 字节)


谢谢你的帮助。


ini_set('memory_limit', '-1');

$fileName= "driver.dll"; 

$fsize = filesize($fileName); 


$hex = unpack("C*", file_get_contents($fileName));

$hexa_string= "";


foreach($hex as $v) 

{

    $hexa_string.= sprintf("%02X", $v);

}


echo $hexa_string;


慕容3067478
浏览 145回答 1
1回答

繁星淼淼

您必须使用 c 包装器进行文件操作:fseek$size = 1024 * 1000;$handle = fopen($file, 'r');fseek($handle, -$size);$limitedContent = fread($handle, $size);
随时随地看视频慕课网APP
我要回答