освобождение памяти

Irrina

Новичок
освобождение памяти

Есть форум, типа vbulletin. Написана пхп-программка, создающая статическую версию форума (или она достаточно забирает большие объемы и создает в процессе работы большие массивы).

Вот может быть так, что она некорректно работает с памятью, с базой. И, допустим, в субботу утром создала копию форума, а в воскресенье вечером, когда народа стало больше, форум упал?
 

Eugene Bond

sudo rm - rf /
Ирина, по-подробнее об этой пхп-программе. Просто ситуация сложилась так, что все телепаты в отпуске и до Нового Года их не будет....
 

Irrina

Новичок
Ну цикл по всем форумам, по всем тредам. Получается карта форума http://forum.newlist.ru/map/map.html в итоге работы. Писала я первую в жизни программу, так что о том, что существуют
PHP:
mysql_free_result($threads); unset($rowthr);
не знала :).
Отлаживала кучу раз, в этот день форум живенько работал. На следующий - начались тормоза...
Потом - в субботу, поставила вроде эти free & unset где только можно, тоже запускала несколько раз, все работало нормально, ну а базы данных в воскресенье вообще на сервере упали...
Сисадмин нас выпнул - говорит, форум базу перегрузил. Но какие конкретно запросы были - не сказал, не стал смотреть.
Вариантов, на самом деле много, а не только карта - вплоть до нападения неприятеля на нас. :(
 

Eugene Bond

sudo rm - rf /
Иррина, вы опять не даете никакой конкретики....
Например, что означает "поставила вроде эти free & unset где только можно"?

Вы поставили их возле компьютера, на монитор или в нужные места (или ненужные) самого вашего скрипта.

Сосредоточтесь, и попробуйте четче все сформулировать, или ждите Нового Года и телепатов...
 

ErrN0

Guest
на пхп скрипты обычно накладываются ограничения на объем используемой памяти и на время выполнения...

но я не вижу связи между этими событиями, разве что скрипт некорректно работал с таблицами форума...
 

Irrina

Новичок
Спасибо за участие :).
1. Вопрос главный такой - у меня в книге написано, что используемая программой память освобождается сама после ее закрытия. Это правда?
2. Еще вопрос: если база работает плохо, можно ли определить, это из-за большого количества запросов к ней или из-за занятой памяти? Кол-во запросов за данный промежуток ведь можно зафиксировать? (Ну это уже про сисадмина и наше отключение :))
3. освобождение памяти поставила после всех запросов и всех созданных массивов. Но тут тоже есть сомнения... Вот если рассмотреть такую конструкцию
PHP:
while($eachpost = mysql_fetch_array($posts)) 
{что-то делаем}
unset($eachpost);
то действительно ли освобождается вся память занятая массивом eachpost? Как-то мне кажется надежнее вот такая штука...
PHP:
while($eachpost = mysql_fetch_array($posts)) 
{что-то делаем;
unset($eachpost); 
}
Хотя везде я вижу первую конструкцию...
 

Irrina

Новичок
Автор оригинала: ErrN0
но я не вижу связи между этими событиями, разве что скрипт некорректно работал с таблицами форума...
записи и изменения не было. Только чтение.
 

tony2001

TeaM PHPClub
>Вопрос главный такой - у меня в книге написано, что используемая
>программой память освобождается сама после ее закрытия. Это
>правда?
да.

>Еще вопрос: если база работает плохо, можно ли определить, это
>из-за большого количества запросов к ней или из-за занятой памяти?
>Кол-во запросов за данный промежуток ведь можно зафиксировать?
переменные в скрипте (выедь вы же их имеете ввиду под "занятой памятью") никак на тормоза базы не влияют.
в первую очередь смотрите запросы к базе, структуру таблиц.

3. имхо это не нужно, Ирина.
у вас все равно при каждой итерации этот массив заменяется другим значением.

выясните у админа что именно там падало - база или апач, пускай скажет вам записи в error_log'ах (если есть записи) и вообще объяснит что произошло.
не зная этого можно долго копать, а в конце концов может оказаться, что проблема в руках самого админа.
 
Сверху