[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: оптимизации по быстродействию
kos
Предложите вариант оптимизации по быстродействию следующего кода:
/* Соединяемся, выбираем базу данных */

$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Could not connect : " . mysql_error());

print "Connected successfully";
mysql_select_db("my_database") or die("Could not select database");

$posts = array();
$k = 0;

$count = 1000;
while ($count) {
$query = "SELECT post,login FROM users_posts ORDER BY login LIMIT $k,1";

$result = mysql_query($query) or die("Query failed : " . mysql_error());
$row = mysql_fetch_array($result);

$posts[$row["login"]][$row["post"]] = ereg_replace("", $row["login"], $row["post"]);
mail("admin@company.com", "User $row[login] has a post", $posts[$row["login"]][$row["post"]]);

$k++;
$count--;
}

mysql_free_result($result);

/* Закрываем соединение */
mysql_close($link);




Спустя 6 минут, 24 секунды (14.10.2010 - 08:59) arvitaly написал(а):
нифига себе 1000 запросов, это еще зачем? кошмарный код

Спустя 45 секунд (14.10.2010 - 09:00) Guest написал(а):
А ВОТ ТАК правильно?
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Could not connect : " . mysql_error());

print "Connected successfully";
mysql_select_db("my_database") or die("Could not select database");

$posts = array();

$query = "SELECT post,login FROM users_posts ORDER BY login LIMIT $k,1";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$row = mysql_fetch_array($result);
mysql_close($link);
foreach ($row as $post)
{
$post [0]
$post [1]
$posts[$row["login"]][$row["post"]] = ereg_replace("", $row["login"], $row["post"]);
mail("admin@company.com", "User $row[login] has a post", $posts[$row["login"]][$row["post"]]);
}

Спустя 59 секунд (14.10.2010 - 09:01) arvitaly написал(а):
неправильно, так обработается только одна запись и то неверно

Спустя 1 минута, 53 секунды (14.10.2010 - 09:03) Guest написал(а):
помоги, объясни как надо?

Спустя 10 минут, 53 секунды (14.10.2010 - 09:14) arvitaly написал(а):
Ну возьмите любой пример по выборке из БД, да вон даже в документации примеров миллион http://php.net/manual/en/function.mysql-fetch-array.php

Спустя 11 минут, 33 секунды (14.10.2010 - 09:26) Guest написал(а):
а вот так корректно?
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
mysql_select_db("my_database");

$result = mysql_query("SELECT post, login FROM users_posts ORDER BY login LIMIT $k,1 ");

while ($row = mysql_fetch_array($result)) {
printf($row[login], $row[post]);
mail("admin@company.com", "User $row[login] has a post", $posts[$row["login"]][$row["post"]]);
}

mysql_free_result($result);
?>

Спустя 2 минуты, 22 секунды (14.10.2010 - 09:28) arvitaly написал(а):
$posts - что это за массив

LIMIT $k,1 - $k не существует

Спустя 4 минуты, 56 секунд (14.10.2010 - 09:33) Guest написал(а):
как это исправить?

Спустя 50 минут, 18 секунд (14.10.2010 - 10:23) linker написал(а):
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
mysql_select_db("my_database");

$result = mysql_query("SELECT post, login FROM users_posts ORDER BY login");

while ($row = mysql_fetch_assoc($result))
{
mail("admin@company.com", "User $row['login'] has a post", $row["login"] . "\n" . [$row["post"]]);
}

mysql_free_result($result);
?>

Спустя 1 час, 50 минут, 27 секунд (14.10.2010 - 12:14) arvitaly написал(а):
Цитата
mail("admin@company.com", "User $row['login'] has a post", $row["login"] . "\n" . [$row["post"]]);

mail("admin@company.com", "User " . $row['login'] . " has a post", $row["login"] . "\n" . $row["post"]);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.