2010-04-17 17 views
6

Tengo un alojamiento compartido donde tengo mi sitio web y la base de datos MySQL. He instalado un script de código abierto para las estadísticas (phpMyVisites) y comenzó a funcionar muy lento últimamente. Está escrito usando algún tipo de marco y tiene muchos archivos PHP. Sé que para encontrar consultas lentas puedo usar la funcionalidad lenta de registro de consultas en MySQL. Pero en este alojamiento compartido no puedo usar este método porque no puedo cambiar my.cnf. No quiero cambiar mi script de estadísticas a otro y no quiero perder el tiempo con todos los archivos de este script para averiguar dónde colocar el código de diagnóstico para registrar las consultas manualmente. Me gustaría hacerlo sin cambios en el código PHP.Cómo registrar consultas lentas en MySQL de alojamiento compartido?

Así que mi pregunta es:

Cómo iniciar una sesión de consultas lentas en estos coditions ?:

  • No se puede cambiar my.cnf para permitir registro de consultas lentas
  • No se puede cambiar la escritura estadísticas a otra
  • no saben cómo se escribe scrpt y donde se emiten comandos mysql
  • no se puede hacer a mi lenta para registro de consultas

¿Hay algún método para hacerlo de una manera simple, fácil y rápida?

+0

Me pregunto por qué tal pregunta votó en contra. "No quiero hacer nada, pero quiero tener todo". Puedo escribir muchísimo. No tengo un php, un servidor de base de datos, un servidor web y un hardvare de servidor ni solicito un hosting compartido, pero quiero tener un facebook. simple, fácil y rápido, por supuesto –

+0

@ Col.Shrapnel Soy desarrollador desde hace 9 años y, aunque esta vez tengo muchas prácticas, me encuentro con problemas muy pequeños como este. Me gustaría ser un teórico académico que solo tiene problemas con el manejo de libros, pero no lo soy. Espero que puedan comprometerse a comprender mi punto de vista y este problema para descubrir qué se pidió para esta pregunta. Espero que puedas ayudar, y si no, sigo agradeciendo que hayas presentado aquí tu opinión sobre lo que te enoja en personas que hacen preguntas limitadas. Espero que cumplas un objetivo personal de continuar con las preguntas que dudes en aceptar. –

+0

Entonces, si tiene tantas prácticas, debe saber la respuesta: necesita un servidor dedicado. Eso es todo. y @Col. Shrapnel tiene razón. Usted no lo quiere, pero lo necesita. –

Respuesta

4

Hmm, tal vez hacer una función que verifica cuánto tiempo una consulta SQL tomó antes de devolver un valor? A continuación, si era a través de una cantidad especificada de registro que ... por ejemplo en php que lo haría como esto

$before = time(); 
//run your query 
$after = time(); 
$difference = $after - $before 
if($difference > 5000) 
    //Log query 

que emula el registrador de consulta sudar tinta, no creo que los theres una manera de permitir que el alojamiento compartido.

Espero que esto ayude :)

+0

sé que esto no coincide con lo que ha dicho en el punto 3, pero es una respuesta tan buena como pude pensar: \ – studioromeo

+0

La respuesta "no puedo hacer" sigue siendo una respuesta;) Gracias –

0

Puede escribir un script que controla el mysql processlist mientras que el script se está ejecutando lenta.

3

Eché un vistazo rápido a phpMyVisites. En config.inc.php encontré la siguiente:

// Other 
if(!defined('DEBUG')) define('DEBUG', false); 
define('DEFAULT_ACTION', false); 

error_reporting(E_ALL); 

if(DEBUG) 
{ 
    define('PRINT_TIME', false); 
    define('PRINT_QUERY_COUNT', true); 
    define('SAVE_DB_LOG', true); 
    define('PRINT_QUERY', true); 
}

sospecho SAVE_DB_LOG podría ser un buen punto de partida, por lo que me gustaría tratar de activar el modo de depuración.

2

¿Está transfiriendo un volcado de datos a un sistema de prueba local donde puede activar el registro lento de consultas una opción?

+0

YES, es una solución, pero requiere tiempo. –

+0

Bueno, dijiste que estás interesado en resolver el problema. Y como bonificación también probarás tu estrategia de respaldo al mismo tiempo, ahora es una ganga ;-) – VolkerK

Cuestiones relacionadas