Posts Tagged with config

Displaying 1-6 of 6 results.
Resolved: Hosting iPage.com MySQL connection error: SQLSTATE[HY000] [2002] Connection refused
posted by admin on November 11, 2016
I am trying to run my Yii 1 website and connect to DB, which is not in my hosting iPage.com and have this error:

CDbConnection failed to open the DB connection: SQLSTATE[HY000] [2002] Connection refused

For example, my MySQL config in iPage.com working fine
protected/config/database.php

<?php
return array(
'connectionString' => 'mysql:host=*******.ipagemysql.com;dbname=somename',
'emulatePrepare' => true,
'username' => 'someuser',
'password' => 'somepassword',
'charset' => 'utf8',
);

Another server connection and error
protected/config/database.php

<?php
return array(
'connectionString' => 'mysql:host=anotherhostname;dbname=somename',
'emulatePrepare' => true,
'username' => 'someuser',
'password' => 'somepassword',
'charset' => 'utf8',
);

Error:

CDbConnection failed to open the DB connection: SQLSTATE[HY000] [2002] Connection refused
Read more
Resolved: Yii 1.1 Change assets folder path directory from assets to another
posted by admin on October 31, 2016
By default we have assets folder, and in server I cant create folder in assets, or copy assets folders with files, I got an internal server error, and website generate js and css errors. How I can change assets folders to another directory.Read more
Resolved: How to store and call value in params
posted by admin on August 3, 2016
I want to store some value as config and then call in website.Read more
Resolved: Yii CGridView pagination not working and alert 500 or 404 error
posted by admin on April 23, 2016
I have trouble about cgridview pagination.
I am using admin page(/{module}/admin that) generated by gii.
it has search form and grid with pagination. its work well without urlmanager

but my team have create urlmanager rule long ago.

'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',

'<module:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>'=>'<module>/<controller>/<action>',

),
),


when I use admin page with this urlmanager rule. It has some problem.
- if not using grid sort or pagination. I can filter in grid and form.
- but if using sort or pagination. I can not filtering in grid and form anymore.

page link is wierd and i think because of some attribute(params) are null like this

/{module}/{controller}/admin/BookManageMain%5Bbmm_code%5D//BookManageMain%5Bbmm_tid%5D/2/.../BookManageMain_page/2/ajax/book-manage-main-grid

if I am copy this url to another tab and Its can not filtering in grid and form too.
but if I remove attribute that has null value(BookManageMain%5Bbmm_code%5D//) I can filter grid and form.

/{module}/{controller}/admin/BookManageMain%5Bbmm_tid%5D/2/.../BookManageMain_page/2/ajax/book-manage-main-grid

console log (not sure filter use POST and sort/page use GET)

before click pagerlink or sorting
.../{controller}/action?BookManageMain%5Bbmm_code%5D=&BookManageMain%5Bbmm_tid%5D=2&...&BookManageMain_page=1&ajax=book-manage-main-grid

after click

.../{controller}/action/BookManageMain%5Bbmm_code%5D//BookManageMain%5Bbmm_tid%5D/2/.../BookManageMain_page/2/ajax/book-manage-main-grid
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
Wiki: How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntuwiki
posted by admin on February 9, 2016
For Ubuntu 12.04 - see this updated tutorial for Ubuntu 14.04.

About LAMP

LAMP stack is a group of open source software used to get web servers up and running. The acronym stands for Linux, Apache, MySQL, and PHP. Since the virtual private server is already running Ubuntu, the linux part is taken care of. Here is how to install the rest.

Set Up

The steps in this tutorial require the user to have root privileges on your VPS. You can see how to set that up in the Initial Server Setup in steps 3 and 4.

Step One—Install Apache

Apache is a free open source software which runs over 50% of the world’s web servers.

To install apache, open terminal and type in these commands:


sudo apt-get update
sudo apt-get install apache2


That’s it. To check if Apache is installed, direct your browser to your server’s IP address (eg. http://12.34.56.789). The page should display the words “It works!" like this.

How to Find your Server’s IP address

You can run the following command to reveal your server’s IP address.


ifconfig eth0 | grep inet | awk '{ print $2 }'


Step Two—Install MySQL

MySQL is a powerful database management system used for organizing and retrieving data

To install MySQL, open terminal and type in these commands:


sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql


During the installation, MySQL will ask you to set a root password. If you miss the chance to set the password while the program is installing, it is very easy to set the password later from within the MySQL shell.

Once you have installed MySQL, we should activate it with this command:


sudo mysql_install_db


Finish up by running the MySQL set up script:


sudo /usr/bin/mysql_secure_installation


The prompt will ask you for your current root password.

Type it in.


Enter current password for root (enter for none):

OK, successfully used password, moving on...


Then the prompt will ask you if you want to change the root password. Go ahead and choose N and move on to the next steps.

It’s easiest just to say Yes to all the options. At the end, MySQL will reload and implement the new changes.


By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
... Success!

By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
... Success!

Cleaning up...


Once you're done with that you can finish up by installing PHP.

Step Three—Install PHP

PHP is an open source web scripting language that is widely use to build dynamic webpages.

To install PHP, open terminal and type in this command.


sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt


After you answer yes to the prompt twice, PHP will install itself.

It may also be useful to add php to the directory index, to serve the relevant php index files:


sudo nano /etc/apache2/mods-enabled/dir.conf


Add index.php to the beginning of index files. The page should now look like this:


<IfModule mod_dir.c>

DirectoryIndex index.php index.html index.cgi index.pl index.php index.xhtml index.htm

</IfModule>


PHP Modules

PHP also has a variety of useful libraries and modules that you can add onto your virtual server. You can see the libraries that are available.


apt-cache search php5-


Terminal will then display the list of possible modules. The beginning looks like this:


php5-cgi - server-side, HTML-embedded scripting language (CGI binary)
php5-cli - command-line interpreter for the php5 scripting language
php5-common - Common files for packages built from the php5 source
php5-curl - CURL module for php5
php5-dbg - Debug symbols for PHP5
php5-dev - Files for PHP5 module development
php5-gd - GD module for php5
php5-gmp - GMP module for php5
php5-ldap - LDAP module for php5
php5-mysql - MySQL module for php5
php5-odbc - ODBC module for php5
php5-pgsql - PostgreSQL module for php5
php5-pspell - pspell module for php5
php5-recode - recode module for php5
php5-snmp - SNMP module for php5
php5-sqlite - SQLite module for php5
php5-tidy - tidy module for php5
php5-xmlrpc - XML-RPC module for php5
php5-xsl - XSL module for php5
php5-adodb - Extension optimising the ADOdb database abstraction library
php5-auth-pam - A PHP5 extension for PAM authentication
[...]


Once you decide to install the module, type:


sudo apt-get install name of the module


You can install multiple libraries at once by separating the name of each module with a space.

Congratulations! You now have LAMP stack on your droplet!

Step Four—RESULTS: See PHP on your Server

Although LAMP is installed, we can still take a look and see the components online by creating a quick php info page

To set this up, first create a new file:


sudo nano /var/www/info.php


Add in the following line:


<?php
phpinfo();
?>


Then Save and Exit.

Restart apache so that all of the changes take effect:


sudo service apache2 restart


Finish up by visiting your php info page (make sure you replace the example ip address with your correct one): http://12.34.56.789/info.php

It should look similar to this.


See More


After installing LAMP, you can Set Up phpMyAdmin, Install WordPress, go on to do more with MySQL (A Basic MySQL Tutorial), Create an SSL Certificate, or Install an FTP Server.Read more