|
|
|
| Скрипт, состоящий из нескольких файлов, регистрирует показы рекламы и клики. В начале каждого файла, использующего базу, я пишу
// Соединяемся с сервером базы данных
$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
if(!$dbcnx) return;
// Выбираем базу данных
if(!@mysql_select_db($dbname,$dbcnx)) exit();
|
Скрипт отлажен и, вроде бы, нормально работает.
Но тут я вспомнил, что надо разрывать соединение с базой после того, как надобность в ней отпадает. И потому в самом конце каждого файла сделал дополнение
Каково же было мое удивление, когда я увидел, что работа скрипта существенно ухудшилась!
То есть, он остался исправным, но тестовый клик обрабатывает неустойчиво - пять раз кликнешь, два раза сработает...
Что бы это могло быть?
Как функционирует mysql_close? Как тривиальный выключатель или как-то сложнее?
Можно ли вообще обойтись без этой коменды? | |
|
|
|
|
|
|
|
для: Владимир55
(26.02.2009 в 20:37)
| | Можно ли вообще обойтись без этой коменды?
Обойтись можно ). Соединение автоматически закрывается при завершении работы скрипта.
Только странновато как-то... насчет "ухудшения работы..." | |
|
|
|
|
|
|
|
для: ddhvvn
(26.02.2009 в 20:53)
| | "Соединение автоматически закрывается при завершении работы скрипта"
А когда работа скрипта завершается?
Если я открыл страницу администратора и читаю ее целый день, скрипт завершен или исполняется? | |
|
|
|
|
|
|
|
для: Владимир55
(26.02.2009 в 22:38)
| | Скрипт выполняется на сервере и высылает вам ответ (response).
А читаете Вы "на клиенте".
Считайте что последний ?> завершает скрипт. | |
|
|
|
|
|
|
|
для: Владимир55
(26.02.2009 в 22:38)
| | Тут аналогия простая. С утра вы попросили секретаршу сделать отчёт. Секретарша отчёт сделала, принесла вам и отпросилась к стоматологу.
Вы сидите читаете отчёт, а секретарша в это время занимается абсолютно другими делами. Например спит со стоматологом. | |
|
|
|
|
|
|
|
для: Владимир55
(26.02.2009 в 20:37)
| | структура include'ов сложная? | |
|
|
|
|
|
|
|
для: Trianon
(26.02.2009 в 23:39)
| | "структура include'ов сложная?"
Нет, я взял за правило избегать цепочки include'ов.
"Считайте что последний ?> завершает скрипт"
Это мне было бы очень кстати. Это точно? | |
|
|
|
|
|
|
|
для: Владимир55
(27.02.2009 в 00:07)
| | > Это мне было бы очень кстати. Это точно?
* sigh * Да, считайте, что так. | |
|
|
|
|
|
|
|
для: BinLaden
(27.02.2009 в 00:16)
| | В таком случае код
будет выполняться вечно!
(Старт кнопкой). | |
|
|
|
|
|
|
|
для: Владимир55
(27.02.2009 в 01:19)
| | Владимир, а что делает функция die()? | |
|
|
|
|
|
|
|
для: Root
(27.02.2009 в 11:41)
| | У меня этот оператор используется при вводе. Например, так:
$forma = '<form method="post">
<input type="text" name="pass">
<input type="submit" value="Ввести пароль.">
</form>';
$pass = $_POST['pass'];
if (!$pass)
{
echo "<br>$forma";
die(); // Остановка скрипта
}
|
А ещё у меня есть такая привычка.
По мере создания сайта те промежуточные варианты кода, которые не нашли своего применения, постепенно сползают вниз страницы, и я отделяю их от рабочей части посредством die(). Словно отчеркиваю на листе бумаги.
По уму, нужно бы их закомментировать, если уж не хочется удалять, но вот сложилось как то так.
Сейчас пришлось всё это почистить. | |
|
|
|
|
|
|
|
для: Владимир55
(27.02.2009 в 13:57)
| | Интересная привычка, у меня привычка наооборот: die() не использовать.
Одним словом, если Вы насильно не завершаете скрипт посредством die() или exit, он завершится сам как сказано выше.
Кроме того, если скрипт не закончил работу через 30 секунд (в большинстве случаев), вы увидете "fatal error". | |
|
|
|