Главная страница
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-1276892998
Юрий
2010-06-19 00:29
2010.09.19
С днем рождения ! 19 июня 2010 суббота


2-1277667083
Terpelo
2010-06-27 23:31
2010.09.19
Управление словарем Lingvo через Alt + щелчок мышки


11-1222555772
AnarchyMob
2008-09-28 02:49
2010.09.19
Lazarus и KOL & MCK


2-1277558905
HF-Trade
2010-06-26 17:28
2010.09.19
Блокировать доступ к памяти процесса


2-1277184716
Miko
2010-06-22 09:31
2010.09.19
Не найдена точка входа процедуры в DLL