Php помилка fatal error

Взяв хостинг найдешевший на unihost.com, залив онлайн гру - все працювало з 128МБ ОЗУ. Потім при зверненні до php файлу, який відповідає за зв'язок з БД MySQL отримав помилку:

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 43 bytes) in /var/www/user/data/www/site.ru/GameEngine/Database/db_MYSQL.php on line 2986 (Сьогодні перейшов на хостинг з 256Мб , не допомогло ;-( )

Як вирішити проблему? Чи варто переходити на хостинг з 384Мб ОЗУ?

Ось функція в якій відбувається помилка:

Як нескладно здогадатися, веб додаток витрачає всю пам'ять, доступну на віртуальному сервері. Подивившись на наведений вами код, стає ясно, що помилка відбувається при спробі перенести результат запиту до таблиці БД в оперативну пам'ять на сервері. Очевидно, вибірка зачіпає величезну кількість записів (сумарний обсяг інформації в яких = 268435456/1024/1024 = 256Мб.). Є кілька виходів: обмежувати кількість порушених запитом записів з таблиці (LIMIT, WHERE і т.д) або ж завести сервер з великим запасом ОЗУ. Переважно перший варіант, т.к в майбутньому ви убезпечите себе від виникнення подібної проблеми. Та й взагалі, потрібно стежити за подібними речами ..

Тут ось, наприклад, один тільки номер рядка лякає:

Такі гігантські скрипти слід розбивати на кілька файлів, щоб хоча б самому в ньому потім не заплутатися ..

відповідь дан 28 Листопада '13 о 12:01

Якщо у вас виникає така проблема, то можна зробити наступне:

Спробувати самостійно змінити це значення, додавши в саме початку index.php (рассположенних в корені сайту) такі рядки:

або ж поклавши в корінь сайту файл .htaccess такого змісту:

Якщо ж такий файл вже є в корені сайту - просто додайте в нього наведену вище рядок.

  1. Якщо це не допомогло - зверніться до адміністратора хостингу і попросіть збільшити кількість доступної пам'яті для PHP.

відповідь дан 28 Листопада '13 о 12:03

Схожі статті