1.0.7 vs 1.0.6

Только что обновил Yii у себя на локальном сервере с 1.0.6 на 1.0.7. И заметил одну неприятную вещь: количество расходуемой памяти вырастает почти в 2 раза.

Одно приложение в 1.0.6 использовало 4.5мб, а сейчас - 8.8. Другое в 1.0.6 требовало 3.5мб, а в 1.0.7 уже показывает использование 7метров.

От чего это?

Хм странно… у меня примерно как и было.

а кроме yii ничего больше не обновлял?

п.с. чем замерял?

Нет, больше ничего не обновлял.

Замерял двумя методами:

  1. C помощью yiidebugtoolbar

  2. Вручную с помощью обычных функций php

Можно diff поизучать - я его приатачил.

Я хорошего мнения о разработчиках Yii, но очень странно их незнание (или авось?), что некоторые встроенные функции имеют глюки при работе с utf-8 строками. В частности, basename(), который они активно используют, выдает некорректный результат, если файл начинается с utf-8. Замена ему:



basename_utf8($filepath, $suffix = false)


{


	$tmp = end(explode('/', $filepath));


	return $suffix === false ? $tmp : preg_replace("/$suffix$/", '', $tmp);


}


Я с этой багой столкнулся при эксплуатации форума на SMF (который стоит и здесь). В PHP 5.1.6 бага присутствовала, в 5.2.9 я ее не обнаружил. Тем не менее, требование Yii >= 5.1.0.

про utf-8 можно почитать тут:

http://www.yiiframew…oc/cookbook/16/

в последнем пункте предлагается перегрузить стандартные строковые функции функциями mbstring, но насколько я знаю, к basename это не относится, но моё мнение - до полной поддержки PHP юникода (что случится с выходом шестой версии) не позволять себе такой роскоши - именовать файлы и директории на сервере китайскими иероглифами :)

Это как программист можешь себе позволить, а пользователю диктовать такие условия недопустимо. Заливает он файл именованный в utf-8: хорошо, если движок хранит имя в БД, а сам файл переименовывает в хеш, но SMF использует комбинированное имя из базового и хеша. В результате работы баги файл на сервер есть, но ссылка и имя не стыкуются.

Например, широко распространенная CentOS 5 (и RH 5 соотв.) до сих пор содержит PHP 5.1.6 — большие версии есть только в сторонних репозиториях (напр. в atomic).

В общем, набор частных случаев, о которых надо помнить.

наткнулся на такую тему в general discussion :o

http://www.yiiframew…pic,3284.0.html

P.S. в winXP воспользовался прогой http://www.irnis.net/soft/xtst/

andy_s, спасибо, кажется это самое оно