Mam poważne problemy z funkcjami PHP Data Object. Próbuję przechodzić przez znaczący zestaw wyników (~ 60k wierszy, ~ 1gig) za pomocą buforowanego zapytania, aby uniknąć pobierania całego zestawu.Zapytanie buforowane PHP PDO
Niezależnie od tego, co robię, skrypt po prostu zawiesza się na PDO :: query() - wygląda na to, że zapytanie działa w trybie niebuforowanym (dlaczego indziej zmiana rozmiaru zestawu wyników 'rozwiązałaby problem?). Oto mój kod do odtworzenia problemu:
Gdybym ograniczyć kwerendy z jakiejś rozsądnej liczby, to działa dobrze:
$rQuery = $Database->query('SELECT id FROM mytable LIMIT 10');
Próbowałem grać z PDO :: MYSQL_ATTR_MAX_BUFFER_SIZE i korzystania z PDO :: prepare() i PDO :: execute() jak również (choć nie ma parametrów w powyższym zapytaniu), oba bez skutku. Każda pomoc będzie doceniona.
Wow porządku jestem idiotą . Nie wiem, co sprawiło mi przeciwne wrażenie. – Stewart
Pod względem technicznym "buforowana" kwerenda oznacza, że biblioteka klienta MySQL wyciąga cały zestaw wyników ze strumienia TCP, zanim przekaże go z powrotem. – staticsan
Hmm, myślałem, że instrukcja obejmuje różnicę między buforowanym/niebuforowanym (styl mysql) i fetch/fetchAll (styl PDO), ale patrząc ponownie nie. Jeśli chcesz uzyskać więcej informacji dodatkowych, możesz znaleźć następujące przydatne informacje: http://netevil.org/blog/2008/06/slides-pdo –