2013-06-19 18 views
13

Przetwarzam stary zestaw php z bazy danych do nowej bazy danych. Pliki danych .php mają łącznie około 220 MB.Używanie ini_set ("memory_limit", "-1") i wciąż brak pamięci

Mam wstawione te linie w skrypcie tak, że powinna ona działać prawidłowo:

ini_set("memory_limit", "-1"); 
set_time_limit(0); 

To jak ja obejmują produkty:

// The exports made by PHPMYADMIN, exported as PHP-Array 
require_once 'export/tx_ttproductsv2_products.php'; 
require_once 'export/tx_ttproductsv2_keyword.php'; 
require_once 'export/tx_ttproductsv2_keywords_in_products.php'; 
require_once 'export/tx_ttproductsv2_typebook.php'; 
require_once 'export/tx_ttproductsv2_typegospel7.php'; 
require_once 'export/tx_ttproductsv2_typemedia.php'; 

Gdy skrypt próbuje wymaga od nich Otrzymuję ten błąd:

PHP Fatal error: Out of memory (allocated 880541696) (tried to allocate 469762048 bytes) in ......

Mam lokalną instalację EasyPHP działającą na Win XP 7 SP1. Mam pamięć 6 GB, Intel i5.

Jak mogę sprawić, aby PHP uruchamiało cały skrypt bez błędu pamięci?

+0

Spróbuj zwiększyć 'upload_max_filesize' &' post_max_size'? –

+0

@KhawerZeshan, nie przesyłać rzeczy? Czy widzę to źle? – Mathlight

+0

eksportowanie przez PHPMYADMIN jest plikiem lub czym? –

Odpowiedz

11

Ograniczenie pamięci pochodzi z systemu operacyjnego, a nie z samego PHP.

Skrypt przydzielone 800MB i stara się przeznaczyć dodatkowo 500MB

próby uruchomienia skryptu na 64-bitowym systemie operacyjnym z 64-bitowym PHP.

+0

To prawdopodobnie naprawi wiele, ale nie jestem w stanie przetestować tego teraz (potrzebuję tego od razu). – Mathlight

+1

Najlepszym rozwiązaniem jest pobieranie danych i przetwarzanie ich w porcje zamiast ładowania wszystkiego do pamięci, a następnie przetwarzania. –

+0

Wiem, podzieliłem go na 3 części (teraz kodowanie), a to powinno zadziałać dobrze ... Dziękuję wszystkim za pomoc i pomysły;) – Mathlight