Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.09.19;
Скачать: CL | DM;

Вниз

PHP: когда закрывать соединение с базой   Найти похожие ветки 

 
pasha_golub ©   (2010-06-23 10:34) [0]

Два вопроса.

1.


mysql_query("ЫУДУСЕ ....", $link) or die("Query failed");
mysql_close($link);


Будет ли выполнен mysql_close?

2.


function foo()
{
...
 return mysql_affected_rows($link);
 mysql_close($link);
}


А тут?


 
12 ©   (2010-06-23 10:45) [1]

or die
вроде сам php интерпретатор все должен закрыть

из хелпа
При вызове return исполнение пользовательской функции прерывается
а при выходе из облвидимости   вроде сам php интерпретатор все должен закрыть


 
pasha_golub ©   (2010-06-23 10:47) [2]

То что он сам все поубивает мне известно. Надо просто разложить в мозгу по полочкам. Бо в ПХП есть еще так называемые shutdown functions.


 
wicked ©   (2010-06-23 11:47) [3]


> Бо в ПХП есть еще так называемые shutdown functions.

shutdown functions используются для того, чтоб прицепить кусок кода, который должен выполниться всегда, когда завершается скрипт, не зависимо от того, завершается ли он в штатном режиме (текст программы закончился) или во внештатном (например, die)

удобно, например, для замера скорости выполнения скрипта - в начале замерили timestamp, положили в глобальную переменную и зарегистрировали функцию
а функция, при завершении скрипта, посчитала, сколько он работал и положила себе куда то в файл

а ежели ты хошь закрывать соединение к базе с помощью shutdown functions, то переменную коннекшена нужно держать в глобальной переменной, что не всегда есть гуд
уж лучше тогда ОО обертки, с деструкторами, которые сами и закроют


 
Омлет ©   (2010-06-23 11:54) [4]

> pasha_golub ©   (23.06.10 10:34)  
> 1. Будет ли выполнен mysql_close?


Будет, только если не возникнет исключения в mysql_query или других предшествующих строках.

> 2. А тут?

Не будет. После return ничего не будет.

Гарантированно закрыть можно как-то так:

 $connection = mysql_connect(...);
 if ($connection !== false) {
    try {
       ...
       mysql_query(...);
       mysql_query(...);
       mysql_query(...);
       ...

       mysql_close($connection); // закрыть штатно
    }
    catch (Exception $e) {
       mysql_close($connection); // закрыть в любом случае
    }
 }


 
aka   (2010-06-24 18:01) [5]


> pasha_golub ©   (23.06.10 10:34)  

Закрывать нужно в любом случае, зачем создавать много коннектов, а если пользователей куча?

Завязаться нужно на index.php?page=[page1,page2....] . В общих чертах:

1) коннект

2) включить нужный кусок кода require_once("script_folder/".$_GET["page"].".php");

3) закрытие коннекта



Страницы: 1 вся ветка

Текущий архив: 2010.09.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
15-1277411728
DevilDevil
2010-06-25 00:35
2010.09.19
Валидация нескольких XML по одному XSD


10-1167983615
Ромка
2007-01-05 10:53
2010.09.19
Количество страниц в Excel


15-1277370419
partizan
2010-06-24 13:06
2010.09.19
Открыть веб-страницу


2-1277246482
Отшельник
2010-06-23 02:41
2010.09.19
Как узнать, подключена ли другая программа к серверу?


3-1245325959
vanatage10
2009-06-18 15:52
2010.09.19
Как обновить значение в DBgrid измененное в другой программе