sexta-feira, 18 de junho de 2010

Msn-Proxy - Interface de visualização lenta

O motivo pela lentidão é que o arquivo view.php fica fazendo loop de pesquisa no mysql, até encontrar o fechamento da janela, onde o loop para. O problema é que eventualmente quando você vai consultar as conversas de alguém com a janela ainda aberta, para tudo de funcionar até que a pessoa feche a janela ou a sessão do browser expire, e o loop do php pare de rodar.

O patch abaixo adiciona uma pesquisa contando os registros antes do loop, e altera o loop para não ser inifinito, e sim até o número de registros efetivamente encontrado no banco.
Patch contra a versão 0.7:

# cd /var/www/msn-proxy/
# pico view.patch
Adicione o seguinte em seu arquivo:


--- view.php 2009-02-05 16:37:40.000000000 -0200
+++ view.php 2009-11-24 09:58:43.000000000 -0200
@@ -40,7 +40,13 @@
      $date = "";;
     $eof = 0;
-    while(1) {
+    $loop = 0;
+    $sqlcount = "SELECT COUNT(*) AS count FROM log WHERE sb_id = '".$_REQUEST['sb_id']."' ";
+    $result = mysql_query($sqlcount);
+    while ($row = mysql_fetch_array($result))
+        $count = $row["count"];
+
+    while($loop <= $count ) {
 
  $sql  = "SELECT * from log WHERE sb_id = '".$_REQUEST['sb_id']."' ";
  if ($date) {
@@ -80,9 +86,8 @@
      if ($eof == 1)
   break;
  }
- if ($eof == 1)
-     break;
- sleep(1);
+ if ($eof == 1) break;
+ $loop = $loop + 1;
     }
     mysql_close($mysql);
 ?>

# patch -p0 < view.patch
patching file view.php

Fonte:  http://www.remontti.com.br/blog/archives/528

Nenhum comentário: