2012-03-23 2 views
-2

У меня проблема, я работаю над скриптом, и все было хорошо, пока вдруг не загрузится основная страница на 1.2 минуты, после того, как LOT комментирует и раскомментирует, я обнаружил следующую функцию делал все медленно:Функция, которая замедляет php-страницу

function toFollow(){ 
    $sql = "SELECT id FROM tofollow WHERE enabled = '1'"; 
    if (!$result = mysql_query($sql)) { 
     return 'A error occured: ' . mysql_error(); 
    } 
    while ($row = mysql_fetch_assoc($result)) { 
     $users[] = $row['id']; 
    } 
    return $users; 
} 

UPDATE:

я узнал, что эта проблема, по тому же сценарию я бегу:

foreach(toFollow() as $user){ 
    $connection->post('friendships/destroy', array('user_id' => $user)); 
    $count++; 
} 

Таким образом, я просто изменил его:

$tofollow = toFollow();  
foreach($tofollow as $user){ 
    $connection->post('friendships/destroy', array('user_id' => $user)); 
    $count++; 
} 

И это работает !! (Я до сих пор не понимаю, в чем проблема)

Спасибо всем!

Любые предложения?

+0

** нет абсолютно ничего плохого в этой функции самой ** Вы должны обеспечить, по меньшей мере, информацию о том, является размером таблицы tofollow и $ пользователей массива? –

+2

Проблема заключалась в том, что вы вызывали функцию toFollow() на каждой итерации цикла foreach. – sikander

ответ

0

Создайте индекс на enabled, если он еще не существует.

Более подробная информация об индексах здесь: How does database indexing work?

+1

Индексы действительно помогают значительно ускорить извлечение данных, поэтому это было не плохое предложение, учитывая небольшую информацию, которую пользователь первоначально разместил. В любом случае ... – sikander

Смежные вопросы