PHP-скрипт медленный на сервере, но быстрый в локальном

70
5

Сначала я хочу сказать, что мой английский очень плохой, но я собираюсь попробовать.

Я попытался запустить PHP-скрипт на своем ПК с помощью wamp-сервера, и он работает нормально, но когда я загружаюсь, по какой-то причине он проводит столько времени, чтобы завершить выполнение на хосте, и почти всегда заканчивается службой временно Недоступная ошибка (хост закрывает соединение).

Я использовал some die(), чтобы увидеть, где проблема, и я нашел цикл for, где я делаю большую строку (я только конкатенируюсь, чтобы сделать большой INSERT для его выполнения после цикла). И этот цикл работает в локальном... Я не понимаю, почему не работает на хосте.

//insertar valores en bbdd
$sql = "Insert into valor values ";
$primer = 1;

$tiempo_inicio = microtime(true);

for($i = 0 ; $i <= count($array2) - 1 ; $i++)
{

//insertar glucosa
if(!$array2[$i][1] == "")
{
if (!$primer) $sql .= ", ";
else $primer = 0;

$sql .= "('" . $this->paciente . "', '" . $array2[$i][0] . "', 'Glucosa', " . $array2[$i][1] . ")";

$this->Comprobar_Aumentar_Avisos($array2[$i][0], $array2[$i][1]);
}

//insertar raciones
if(!$array2[$i][2] == "")
{
if (!$primer) $sql .= ", ";
else $primer = 0;

$sql .= "('" . $this->paciente . "', '" . $array2[$i][0] . "', 'Raciones', " . $array2[$i][2] . ")";

}

//insertar insulina
if(!$array2[$i][3] == "")
{
if (!$primer) $sql .= ", ";
else $primer = 0;

$sql .= "('" . $this->paciente . "', '" . $array2[$i][0] . "', 'Insulina', " . $array2[$i][3] . ")";
}
}

$tiempo_total = microtime(true) - $tiempo_inicio;

die($tiempo_total);

if ($sql != "Insert into valor values ") {
$AccessBD = new TAccessBD;
$AccessBD->usuario = $this->paciente;
$AccessBD->Inicialitzar_BD();
$AccessBD->query = $sql;
$res = $AccessBD->Ejecutar_SQL();
$AccessBD->Finalitzar_BD();
unset($AccessBD);
}

спросил(а) 2013-06-22T19:11:00+04:00 7 лет, 4 месяца назад
1
Решение
59

Проблема заключалась в том, что в цикле я слишком часто $this->Comprobar_Aumentar_Avisos($array2[$i][0], $array2[$i][1]); к базе данных в этой функции: $this->Comprobar_Aumentar_Avisos($array2[$i][0], $array2[$i][1]);

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

Поэтому я решил уменьшить количество доступа к базе данных до минимума, и теперь он работает нормально.

Огромное спасибо за помощь!

ответил(а) 2013-06-23T23:27:00+04:00 7 лет, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема