Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Особенности работы с памятью

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Мелкий Супермодератор
Отправлено: 18 Декабря, 2011 - 12:07:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Думаю, будет не безынтересным: http://habrahabr[dot]ru/blogs/php/134784/
Особенности выделения, использования и освобождения памяти.


Отредактировано администратором: EuGen, 18 Декабря, 2011 - 17:33:11
Пожалуйста, не нужно создавать темы в устаревшем разделе "Программирование на PHP" - его, напротив, нужно упорядочивать


-----
PostgreSQL DBA
 
 Top
DeepVarvar Супермодератор
Отправлено: 18 Декабря, 2011 - 13:22:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Цитата:
В документации PHP сказано, что приведение к null уничтожит переменную и ее значение, однако, по данному скрипту видно что это не так, что собственно является багом (документации).

---
valenok пишет:
Значение Null сбрасывает привязку названия переменной к ячейке в памяти и переменной больше не соответствует никакая ячейка. Переменная просто никуда не указывает и ни к чему не ведет. В этом случае переменная считается неопределенной,
isset вернет false, а вот is_null вернет true, так как название есть а привязка к ячейке отсутствует.

Отсюда: http://www.php.su/forum/topic.ph...98453#1241798453
---
Из комментариев статьи на хабре:
shagguboy пишет:
>почему подобные вещи не пишут в книжках
потому что не нужно? на мое имхо вот это все надо в 2% случаев, и то надо сильно подумать перед тем как лезть в эти дебри, а не просто поставить лимит побольше. php скрипт работает доли секунды, потом завершается. Даже в режиме FASTCGI где это ОЧЕНЬ сильно не нужно.

а так, тут просто собрание коллекции фактов, без выводов.
на мое имхо вся эта статья умещается в одну фразу «copy on write». Знание значения этой фразы заменяет всю эту статью.

НЕ рассмотрен сборщик мусора в разных версиях, а это самое интересное.

НЕ рассмотренно сколько памяти аллокированно скриптом и отдается ли она системе. а то у особо везучих получается веселая вещь — вроде mem usage показывает ноль, а скрипт отваливается по нехватке памяти.
>Таким образом PHP действительно избавляет от необходимости использовать передачу по >ссылке для оптимизации использования памяти
вот тут самое смешное то, что передача по ссылке если внутри функции переменная не меняется УХУДШАЕТ быстродействие

>В остальном же мы видим, что если массив, используемый для цикла, имеет больше чем одну >ссылку на себя, тогда для него не применяется оптимизация из примера №1
опять — а скорость померять? а количество zval'ов посмотреть?

В целом действительно познавательно. Однако общего мнения нет ни у кого. И это реально грустно. Так кто же знает реальные данные?
 
 Top
DlTA
Отправлено: 18 Декабря, 2011 - 14:01:07
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




больше всего удивило:
Цитата:
оптимизация использования массива в цикле. На время работы цикла, при попытке изменить исходный массив, неявно создается копия структуры массива (но не копия значений), которая и становится доступной по завершению цикла, а исходная структура уничтожается.

а в чем оптимизация?
 
 Top
caballero
Отправлено: 18 Декабря, 2011 - 15:55:30
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




DlTA пишет:
а в чем оптимизация?

Видимо речь должна была идти об "отложенном копировании" что массив не копируется пока не изменяется. Если вы будете только читать - PHP будет работать с массивом по ссылке.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
DlTA
Отправлено: 18 Декабря, 2011 - 16:19:28
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




caballero пишет:
что массив не копируется пока не изменяется.
куда?!?
тут работа в цикле с изменением элементов массива для чего тут копирование? какой от него смысл?
или же вся проблема в самом алгоритме работы с памятью в PHP
типа для работы внутри блока не по ссылке делается именно копия?!
 
 Top
Champion Супермодератор
Отправлено: 18 Декабря, 2011 - 17:26:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Вот фишка с циклом для меня новость. И че-то совсем не пойму, почему, если добавить новую ссылку на массив, то копирования в цикле уже не происходит. В чём тут оптимизация и что оптимизируется - для меня выглядит туманно
 
 Top
Stierus Супермодератор
Отправлено: 18 Декабря, 2011 - 23:04:26
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Цитата:
на мое имхо вся эта статья умещается в одну фразу «copy on write». Знание значения этой фразы заменяет всю эту статью.
+1 Улыбка
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Обсуждение статей »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB