我有使用PDO連接到我的sqlite3的數據庫和計數的所有記錄下面的PHP腳本:PDO SQLite的'使用fetchall()`耗盡所有內存
<?php
ini_set('max_execution_time', 300);
error_reporting(E_ALL);
ini_set("display_errors", 1);
$db = new PDO('sqlite:db/MYDB.sl3');
$result = $db->query('SELECT * FROM MYTABLE');
$rows = $result->fetchAll();
$row_count = count($rows);
echo "Rows: " . $row_count . "\n";
?>
都好,如果我從shell中運行它(PHP -CLI):
Rows: 175412
但是從網絡運行它,它拋出我下面的錯誤:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 14 bytes) in /var/www/test/sqlitepdo.php on line 9
在PHP中設置內存不是一個解決方案,因爲這不應該發生,因爲它不會發生與MySQL相同的結果。
有什麼想法?
SQLite的有'COUNT(*)'而不是'COUNT(別的)'了特別的優化。 –
是的,這工作。請在答案中編輯雙「echo」,以便我可以接受它。 – bsteo
兩件事情都已更新 –