Posts Tagged with rf

Displaying 1-4 of 4 results.
Resolved: Ubuntu Linux remove directory from root var/www directory problem
posted by admin on February 7, 2017
I try to remove folder but terminal gave error
Command and error

rm -rf /var/www/website.dev
rm: cannot remove '/var/www/website.dev': Permission denied

I try to did it before this command and the same situation

sudo chmod -R 777 /var/www/website.dev

I try to make my user superuser but still without result

sudo adduser <username> www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rwX /var/www
Read more
Wiki: Yii on update, detect if a specific AR property has been changed on beforeSave()wiki
posted by admin on April 23, 2016
You need to store the old attributes in a local property in the AR class so that you can compare the current attributes to those old ones at any time.

Step 1. Add a new property to the AR class:

// Stores old attributes on afterFind() so we can compare
// against them before/after save
protected $oldAttributes;


Step 2. Override Yii's afterFind() and store the original attributes immediately after they are retrieved.

public function afterFind(){
$this->oldAttributes = $this->attributes;
return parent::afterFind();
}


Step 3. Compare the old and new attributes in beforeSave/afterSave or anywhere else you like inside the AR class. In the example below we are checking if the property called 'level' is changed.

public function beforeSave()
{
if(isset($this->oldAttributes['level']) && $this->level != $this->oldAttributes['level']){

// The attribute is changed. Do something here...

}

return parent::beforeSave();
}
Read more
Wiki: Yii 1.1 Улучшение производительностиwiki
posted by admin on March 24, 2016
Производительность веб-приложения зависит от многих факторов. Главные из них — обращение к базе данных, файловой системе и пропускная способность сети. В Yii, для уменьшения падения производительности из-за самого фреймворка, учтён каждый из этих факторов. Несмотря на это, многие части приложения можно улучшить для получения более высокой производительности.

1. Включение расширения APC
Включение расширения PHP APC — возможно, самый простой способ улучшить общую производительность приложения. Расширение оптимизирует и кэширует промежуточный код PHP и выигрывает время, затрачиваемое на интерпретацию скриптов PHP при каждом запросе.

2. Отключение режима отладки
Отключение режима отладки — ещё один лёгкий способ увеличить производительность. Приложение Yii работает в режиме отладки если константа YII_DEBUG определена как true. Режим отладки полезен при разработке, но не лучшим образом влияет на производительность из-за использования большего числа компонентов. К примеру, при журналировании ошибок, с каждым сообщением может записываться дополнительная информация.

3. Использование yiilite.php
Если используется расширение PHP APC, мы можем заменить yii.php другим загрузчиком — yiilite.php. Это даст приложению ещё больший прирост производительности.

Файл yiilite.php поставляется вместе с каждой версией Yii и представляет собой собранные вместе часто используемые классы. Все комментарии и выражения трассировки вырезаются, поэтому использование yiilite.php уменьшает количество подключаемых файлов и выполняемого кода.

Стоит заметить, что использование yiilite.php без APC может отрицательно повлиять на производительность, так как yiilite.php включает в себя классы, которые могут не требоваться при каждом запросе и отнимать некоторое время на парсинг. Также было отмечено, что на некоторых конфигурациях сервера yiilite.php медленнее даже при использовании APC. Лучший способ принятия решения об использовании yiilite.php — провести тесты на прилагающемся демонстрационном приложении hello world.

4. Использование кэширования
Как уже было описано в разделе «кэширование», Yii предоставляет несколько решений, которые могут значительно увеличить производительность приложения. Если генерация каких-либо данных занимает много времени, мы можем использовать кэширование данных для того, чтобы делать это не так часто. Если часть страницы остаётся неизменной, мы можем использовать кэширование фрагментов. Если вся страница не меняется, можно использовать кэширование страниц.

Если используется Active Record, можно включить кэширование структуры базы данных. Это можно сделать, установив в настройках свойству CDbConnection::schemaCachingDuration значение, большее 0.

Кроме описанных настроек приложения можно использовать кэширование на уровне сервера. Описанное выше кэширование APC относится как раз к ним. Существуют и другие решения, такие как Zend Optimizer, eAccelerator и Squid.

5. Оптимизация базы данных
Получение данных из базы часто является узким местом производительности приложения. Несмотря на то, что кэширование может смягчить потери, оно не решает проблему полностью. Когда в базе содержатся огромные объёмы данных, и нужно обновить кэш, получение данных может быть чрезмерно растратным при неверном составлении схемы данных или запросов.

Будьте осмотрительны при выборе индексов. Их использование может значительно ускорить SELECT-запросы, но замедляет запросы INSERT, UPDATE и DELETE.

Для сложных запросов рекомендуется создать view в базе данных вместо использования запросов из кода PHP, которые СУБД разбирает каждый раз.

Не злоупотребляйте Active Record. Хоть Active Record и является удобной проекцией данных в стиле ООП, но производительность при её использовании, из-за использования объектов для представления каждой строки результата, падает. Для приложений, интенсивно работающих с данными, рекомендуется использовать DAO или API для работы с СУБД на ещё более низком уровне.

Последний по счёту, но не по значению совет: используйте LIMIT в SELECT-запросах. Так вы сможете избежать получение избыточных данных из базы и расхода требующейся для их хранения памяти, выделенной PHP.

6. Минимизация файлов скриптов
Сложные страницы часто включают большое количество внешних файлов JavaScript и CSS. Так как каждый файл равен дополнительному запросу к серверу, мы должны уменьшить число файлов путём их слияния. Также не лишним будет уменьшить размер каждого из них для уменьшения времени передачи по сети. Существует немало инструментов для выполнения этих двух задач.

Для страницы, генерируемой Yii, не исключено, что некоторые скрипты подключаются компонентами, код которых изменять не хочется (например, компоненты ядра Yii). Как минимизировать такие скрипты показано далее.

Для начала опишем, какие файлы минимизировать. Зададим свойство scriptMap компонента clientScript. Это можно сделать как в настройках приложения, так и в коде. К примеру:

$cs=Yii::app()->clientScript;
$cs->scriptMap=array(
'jquery.js'=>'/js/all.js',
'jquery.ajaxqueue.js'=>'/js/all.js',
'jquery.metadata.js'=>'/js/all.js',

);

Приведённый код сделает файлы JavaScript доступными по URL /js/all.js. Если какой-либо из этих файлов требуется для каких-либо компонент, Yii подключит URL (один раз) вместо того, чтобы подключать отдельные файлы.

Нам понадобится использовать какой-либо инструмент для слияния (и, возможно, сжатия) JavaScript в один файл и записать результат в js/all.js.

То же относится и к файлам CSS.

Увеличить скорость загрузки страницы можно также при помощи Google AJAX Libraries API. К примеру, мы можем подключить jquery.js с серверов Google вместо того, чтобы использовать свой сервер. Для того, чтобы это сделать нужно настроить scriptMap следующим образом:

$cs=Yii::app()->clientScript;
$cs->scriptMap=array(
'jquery.js'=>false,
'jquery.ajaxqueue.js'=>false,
'jquery.metadata.js'=>false,

);

Устанавливая значения в false мы запрещаем Yii генерировать код для включения соответствующих файлов. Вместо этого подключим их с серверов Google:

<head>
<?php echo CGoogleApi::init(); ?>

<?php echo CHtml::script(
CGoogleApi::load('jquery','1.3.2') . "\n" .
CGoogleApi::load('jquery.ajaxqueue.js') . "\n" .
CGoogleApi::load('jquery.metadata.js')
); ?>

</head>


7. Использование символьных ссылок для ресурсов
Если ваш проект интенсивно использует ресурсы, то вы можете увеличить его производительность посредством символьных ссылок вместо стандартного копирования файлов. Для того, чтобы включить их вам нужно задать свойство linkAssets компонента приложения assetManager используя конфигурационный файл protected/config/main.php:

return array(
// ...
'components' => array(
// ...
'assetManager' => array(
'linkAssets' => true,
),
),
);

Имейте ввиду, что это потребует дополнительных настроек.Read more
Resolved: Русский текст в транслит на PHP(Rus to Lat)
posted by admin on December 25, 2015
The last segment is actually the friendly title of the blog article. The problem is when I try to pass that segment to the database, the cyrillic fonts turn into something like %D1%8A%D0%B4%D1%80%D0%BE%D1%81%D1%8 and couldn't match the database record. In the address bar in my browser it looks normal (мъдростта-на-вековете) but if I choose 'copy url location' the last segment again turns into these strange characters.

Please help to convert cyrillic to english letters(lat)Read more