Здравствуйте, форумчане!
После выполнения цикла, переменная $value остаётся в памяти:
$test1 = array(1,2,3,4,5);
foreach ($test1 as $value)
{ КАКИЕ-ТО ОПЕРАЦИИ }
var_dump($value);
Нужно ли очищать переменную после цикла?:
unset($value);
И вообще имеет ли смысл всегда следить за переменными и очищать их, если они дальше по коду использоваться не будут?
T1grOK
11.01.2014 - 13:25
Оставьте это дело zend engine и не захламляйте код лишними инструкциями.
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Barh
Нет, они слишком мало места занимают в памяти, тем более сейчас с памятью особых проблем нет, на современном железе. Удалять может быть стоит какие-нибудь очень тяжелые массивы, а так думаю нет.
Я например обычно всегда использую $val для foreach, просто взял это за правило и поэтому когда их несколько встречается в скрипте они просто друг друга затерают.
А для обычных проходных переменных использую что-то типа $temp, только переборщать не стоит, все таки переменная своим названием должна обычно нести также и смысловую нагрузку.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
T1grOK, спасибо, почитаю.
ABC, спасибо за ответы на вопросы. Я примерно так и делаю сейчас)
bestxp
11.01.2014 - 14:05
Цитата (ABC @ 11.01.2014 - 13:28) |
Barh
Нет, они слишком мало места занимают в памяти, тем более сейчас с памятью особых проблем нет, на современном железе. Удалять может быть стоит какие-нибудь очень тяжелые массивы, а так думаю нет.
Я например обычно всегда использую $val для foreach, просто взял это за правило и поэтому когда их несколько встречается в скрипте они просто друг друга затерают.
А для обычных проходных переменных использую что-то типа $temp, только переборщать не стоит, все таки переменная своим названием должна обычно нести также и смысловую нагрузку. |
Цитата |
http://habrahabr.ru/post/136835/ а ты смелый смотрю))) |
Цитата |
Причина кроется в амперсанде. |
Чего бы мне не быть смелым.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
bestxp
11.01.2014 - 14:15
но всё же, иногда лучше убирать за собой, наверно привычка после не скриптового программирования, убирать иногда за собой)
да и как то сталкивался часто
порой лучше сделать чем потом за тебя кто-то поставит ссылку, для удобства и ... лови приветы
bestxp, согласен, что если не чистить за собой, то впоследствии, если программистов несколько, то можно наткнуться на "необъяснимые баги". Совет учту)
bestxpПойду создам опрос.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
ABC, не забудьте скинуть ссылку на него или результаты)
Убирать за собой не всегда целесообразно. Дело в том, что функции "уборки" тоже влекут накладные расходы. И часто оно неоправдано. Более того, неоправдано оно бывает в 99% случаев. А иногда полезно.
Это как в ресторане. Вы заплатили за обслуживание и тут же сами понесли грязную посуду на мойку.
Слава Богу в PHP есть сборщик мусора, который сам очищает память после отработки скрипта. Другое дело, если скрипт долгий и переменные содержат большой объем данных. Тут не мудрено и на лимит нарваться. Тогда действительно стоит прибраться в процессе.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
bestxp
11.01.2014 - 14:52
мусор это понятно для обычного это да, но тут я натыкался на "рефакторинг" поэтому поставил для себя точку чистить после такого, если ты конечно один работаешь сейчас, не значит что потом у тебя не появится еще кто-то
главное рационально
http://phpforum.ru/index.php?act=ST&f=22&t=78816
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
AllesKlar
11.01.2014 - 14:54
bestxp
Эпоха ассемблера, 640kb памяти, оптимизации кода, планирования приложений ушла в небытие.
Появился C#, php для чайников и разработчики из клана Stack Overflow.
Хотя.. я даже рад этому. Пока есть люди, которые думают, что они программисты, и в руководствах к созданным ими чудовищ пишут "Оптимизировано для ...." на рынке труда я буду востребован в числе первых.
ABC
Это не в твой камень огород, чистить после foreach ничего не нужно, конечно, на это есть garbage collector, но фраза
Цитата |
тем более сейчас с памятью особых проблем нет |
вызывает как минимум недоумение.
_____________
[продано копирайтерам]
Цитата |
вызывает как минимум недоумение. |
Ну да, согласен, немного глупо звучит. За памятью нужно следить всегда и просто нужно все стараться делать логически правильно.
Я имел ввиду такие моменты, что когда-то раньше, я читал вот, очень хорошим тоном, например считалось очищать отработанную выборку после запроса в БД, сейчас-же как правило нет. В те моменты, когда на сервере стояло 32 Мб оперативки можно было бы очищать переменные, чтоб немного освобождать ее, конечно соизмеряя с расходами на саму UNSET, сейчас стоят планки по несколько гиг и никто об этом даже не заморачивается. Заморачиваются архитектурой тяжелых запросов в БД, кешированием и т.д., но не удалением простейших переменных.
Вот что я хотел сказать, когда написал:
Цитата |
тем более сейчас с памятью особых проблем нет |
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.