ホームページ >バックエンド開発 >PHPチュートリアル >セッション中の配列の読み取りで問題が発生しました
$query ="select * from #@__arctype where isbaike=1"; $this->dsql->Execute("bkarry",$query); $bkarry=array(); session_start(); if(!session_is_registered("bkarry")){ while($row2 = $this->dsql->GetArray("bkarry")) { $bkarry[]=$row2; } $bkarry2=serialize($bkarry); $_SESSION['bkarry']=$bkarry2; }else{ $bkarry=unserialize($_SESSION['bkarry']); } //unset($_SESSION['bkarry']); //var_dump($bkarry); while($row = $bkarry) { var_dump($row); } exit();
1. 直接変更します。 php.ini
memory_limit=128M
2. エントリファイルに
@ini_set('memory_limit' , '128M'); を追加します
では、セッションに保存する必要があるデータとは正確には何でしょうか? 、コードはセッションに 1 つのレコードしか保存しません。メモリが不足しています。データベースの確立に問題がありますか?
セッションはこのようにはなりません。
のデータは KEY-VALUE データベースに配置する必要があります。
問題はセッションアクセスではなく、読み込み後の処理です!
これは無限ループです
while($row = $bkarry) { var_dump($row);}
ただし、これによってメモリ不足が発生するわけではありません
session_start();$query ="select * from #@__arctype where isbaike=1";if(! isset($_SESSION['bkarry'])) { $this->dsql->Execute("bkarry",$query); while($row2 = $this->dsql->GetArray("bkarry")) { $_SESSION['bkarry'][] = $row2; }}$bkarry =& $_SESSION['bkarry'];
foreach($bkarry as $k=>$row){}このように読んでください 返信してくれたモデレーターに感謝します