½â¾öPHPÀïÅúÁ¿Êý¾ÝÂÖ»ØʱÄÚ´æºÄ¾¡ÌâÄ¿µÄ°ì·¨
Ïà¹ØѧϰÒý¼ö£ºphp±à³Ì£¨ÊÓƵ£©
±ÈÀ´ÔÚ¿ª·¢Ò»¸öPHP³ÌÐòʱÅöµ½ÁËÏÂÃæµÄ´íÎó£º
PHP Fatal error: Allowed memory size of 268 435 456 bytes exhausted
´íÎóÐÅÏ¢ÏÔʾͬÒâµÄ×î´óÄÚ´æÒѾºÄ¾¡¡£Åöµ½ÕâÑùµÄ´íÎóÆð³õÈÃÎҺܾª²ï£¬µ«×ªÑÛÒ»Ï룬Ҳ²»¾ªÆ棬ÓÉÓÚÎÒÕýÔÚ¿ª·¢µÄÕâ¸ö³ÌÐòÊÇÒªÓÃÒ»¸öforeach
ÂÖ»ØÓï¾äÔÚÒ»¸öÓÐ4Íò±Ê¼Ç¼µÄ±íÀïÈ«±íËÑË÷¾ßÓÐÌض¨ÌصãµÄÊý¾Ý£¬Ò²¾ÍÊÇ˵£¬Ò»´ÎÒª°Ñ4ÍòÌõÊý¾ÝÈ¡³ö£¬È»ºóÖðÌõ¼ì²éÿÌìÊý¾Ý¡£²»ÑÔ¶øÓ÷£¬4ÍòÌõÊý¾ÝÈ«²¿¼ÓÔص½ÄÚ´æÖУ¬ÄÚ´æ²»±¬²Å¹Ö¡£
¾¿¾¹±à³ÌÕâô¶àÄ꣬ÎÒÒþÔ¼¼ÇµÃPHPÀ﹩¸øÓзÇÒ»´ÎÈ«²¿¼ÓÔØÊý¾ÝµÄAPI£¬ÊÇÏñ´¦ÖÃÁ÷ýÌåÄÇÑù£¬ËæÓÃËæÈ¡Ë涪¡¢Êý¾Ý²¢²»»á»ý´æÔÚÄÚ´æµÄ²éѯ°ì·¨¡£¾¹ý¼ò±ãµÄËÑË÷£¬¹«È»ÔÚ¹Ù·½ÍøÕ¾ÉÏÑ°µ½µÄ׼ȷµÄÓÃ;¡£
Õâ¸öÎÊÌâÔÚPHPµÄ¹Ù·½ÍøÕ¾ÉϽлº³å²éѯºÍ·Ç»º³å²éѯ(Buffered and Unbuffered queries)¡£PHPµÄ²éѯȱʡģʽÊÇ»º³åģʽ¡£Ò²¾ÍÊÇ˵£¬²éѯÊý¾Ý½á¹û»áÒ»´ÎÈ«²¿ÌáÈ¡µ½ÄÚ´æÀ﹩PHP³ÌÐò´¦Öá£ÕâÑù¸øÁËPHP³ÌÐò¶îÍâµÄ¹¦Ð§£¬±È·½Ëµ£¬ÔËËãÐÐÊý£¬½«Ö¸ÕëÖ¸ÏòijһÐеȡ£¸üÖØÒªµÄÊdzÌÐò¿ÉÒÔ¶ÔÊý¾Ý¼¯Öظ´Í£Ö¹¶þ´Î²éѯºÍ¹ýÂ˵ȲÙ×Ý¡£µ«ÕâÖÖ»º³å²éѯģʽµÄȱÏݾÍÊǺÄËðÄڴ棬Ҳ¾ÍÊÇÓÿռ任Ëٶȡ£
Ïà¶ÔµÄ£¬±ðµÄÒ»ÖÖPHP²éѯģʽÊÇ·Ç»º³å²éѯ£¬Êý¾Ý¿âЧÀÍÆ÷»áÒ»ÌõÒ»ÌõµÄ·µ»ØÊý¾Ý£¬¶ø²»ÊÇÒ»´ÎÈ«²¿·µ»Ø£¬ÕâÑùµÄ½á¹û¾ÍÊÇPHP³ÌÐòºÄËð½ÏÉÙµÄÄڴ棬µ«È´ÔöÌíÁËÊý¾Ý¿âЧÀÍÆ÷µÄѹÁ¦£¬ÓÉÓÚÊý¾Ý¿â»á²»¶ÏµÈºòPHPÀ´È¡Êý¾Ý£¬²»¶Ïµ½Êý¾ÝÈ«²¿È¡Íê¡£
ºÜÃ÷ÏÔ£¬»º³å²éѯģʽÊÊÓÃÓÚСÊý¾ÝÁ¿²éѯ£¬¶ø·Ç»º³å²éѯ˳ӦÓÚ´óÊý¾ÝÁ¿²éѯ¡£
¹ØÓÚPHPµÄ»º³åģʽ²éѯ´ó¼Ò¶¼ÖªµÀ£¬ÏÂÃæÁоٵÄÀý×ÓÊÇÔõÑùÊ©Ðзǻº³å²éѯAPI¡£
·Ç»º³å²éѯ°ì·¨Ò»: mysqli
<?php $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); $uresult = $mysqli->query("SELECT Name FROM City", MYSQLI_USE_RESULT); if ($uresult) { while ($row = $uresult->fetch_assoc()) { echo $row['Name'] . PHP_EOL; } } $uresult->close(); ?>
·Ç»º³å²éѯ°ì·¨¶þ: pdo_mysql
<?php $pdo = new PDO("mysql:host=localhost;dbname=world", 'my_user', 'my_pass'); $pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false); $uresult = $pdo->query("SELECT Name FROM City"); if ($uresult) { while ($row = $uresult->fetch(PDO::FETCH_ASSOC)) { echo $row['Name'] . PHP_EOL; } } ?>
·Ç»º³å²éѯ°ì·¨Èý: mysql
<?php $conn = mysql_connect("localhost", "my_user", "my_pass"); $db = mysql_select_db("world"); $uresult = mysql_unbuffered_query("SELECT Name FROM City"); if ($uresult) { while ($row = mysql_fetch_assoc($uresult)) { echo $row['Name'] . PHP_EOL; } } ?>
°Ù·Ö°ÙÔ´ÂëÍøÍøÓÑͲۣº
Õâ¸ö¶«Î÷Ó¦µ±ÓÃÉú³ÉÆ÷
ÕâÖÖд·¨ ¿ÉÒÔÖ±½Ó¿ªµôÁË
´¦ÖôóÊý¾Ý²»³ÉÄÜÒÀÕÕÄÇÖÖд·¨Ð´µÄ
PHPÖÐÎÄÍøÍøÓÑС³Â¸ø³öÁËÒ»¸ö׼ȷµÄ·½Ê½
<?php if (!function_exists('getYieldBigData')) { /** * ʹÓÃÉú³ÉÆ÷·µ»ØÉú³ÉÆ÷¶ÔÏó * @param array $data * @return Generator */ function getYieldBigData($data = []) { foreach ($data as $tmp_data) { yield $tmp_data; } unset($tmp_data); } } if (!function_exists('foreachBigData')) { /** * ÂֻشóÁ¿Êý¾ÝʹÓÃÉú³ÉÆ÷À´ÖÆÔìÖµ * @param array $data * @return array|false */ function foreachBigData($data = []) { if (0 == count($data)) { return false; } $tmp = []; foreach (getYieldBigData($data) as $v) { $tmp[] = $v; } unset($v); return $tmp; } } //µ÷È¡°ì·¨ /** * @var $data array */ $data = []; /** * @var $ret array */ $ret = foreachBigData($data); return $ret;
С°×Ò²ÄÜ¿´µÃ¶®¹þ£¡
ÈçÉÏ£¬´ËÖÖ·½Ê½¿ÉÒÔµ½´ï100Íò/´Î£¡
±¾ÎÄÀ´×Ô°Ù·Ö°ÙÔ´ÂëÍøphpͼÎĽ̳ÌƵµÀ£¬Ô×÷Õߣº Õ½ÉñÎò¿Õ £¬°Ù·Ö°ÙÔ´ÂëÍø¶þ´Î±à×ë¡£
ÒÔÉϾÍÊǽâ¾öPHPÀï´óÁ¿Êý¾ÝÂÖ»ØʱÄÚ´æºÄ¾¡ÎÊÌâµÄ°ì·¨µÄ¾ßÌåÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢°Ù·Ö°ÙÔ´ÂëÍøÆäËüÏà¹ØÎÄÕ£¡
¸ÐлÄúµÄÖ§³Ö£¬ÎÒ»á¼ÌÐøŬÁ¦µÄ!
´ò¿ªÖ§¸¶±¦É¨Ò»É¨£¬¼´¿É½øÐÐɨÂë´òÉÍŶ
°Ù·Ö°ÙÔ´ÂëÍø ½¨Òé´òÉÍ1¡«10Ôª£¬ÍÁºÀËæÒ⣬¸ÐлÄúµÄÔĶÁ£¡