nunolevezinho Posted June 1, 2012 at 08:57 AM Report #459633 Posted June 1, 2012 at 08:57 AM (edited) Olá, tenho uma página que demora cerca de 10 a 20 segundos a carregar e por vezes não o faz (nem chega a carregar, apresenta o Erro 500). O estranho nisto é que isso só acontece se tiver o a chamar a classe PDO e a instanciar. Já tentar remover a classe e a página carrega normalmente sem problemas. Com a classe demora bastante tempo e por vezes nem carrega. pdo.class.php class PDOSingleton { /** * @var PDO */ private static $_instance; /** * O construtor privado impede que alguém ande a criar novas instâncias da classe */ private function __construct() { /* */ } /** * Método factory - devolve a instância criada do PDO, ou cria uma nova * * @return PDO */ public static function GetObj() { if(!isset(self::$_instance)) { self::$_instance = new PDO( 'sqlsrv:server=#dados#;database=#dados#', '#dados#', '#dados#', array( PDO::ATTR_PERSISTENT => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::SQLSRV_ATTR_ENCODING => PDO::SQLSRV_ENCODING_UTF8 ) ); } return self::$_instance; } /** * Já agora, impedir também o uso do clone */ public function __clone() { throw new Exception("Tentativa de Clone!"); } } index.php ob_start(); session_start(); if(!isset($_SESSION['admin'])) { header('location: login.php'); } include('includes/cabecalho.php'); include('../configs/connection.php'); include('../configs/tabelas.php'); include('../classes/pdo.class.php'); $db_pdo = PDOSingleton::GetObj(); //Tabelas e nada de importante // include('includes/rodape.php'); Edited June 1, 2012 at 09:01 AM by nunolevezinho
HappyHippyHippo Posted June 1, 2012 at 09:02 AM Report #459636 Posted June 1, 2012 at 09:02 AM a situação de não responder é porque ultrapassa o tempo limite de execução (que normalmente é de 30 segundos), isso podes alterar mas não te resolve o problema Se o problema é a ligação á base de dados, já tentaste ligar através de outra aplicação para verificar se é da própria base de dados ?? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
nunolevezinho Posted June 1, 2012 at 09:11 AM Author Report #459638 Posted June 1, 2012 at 09:11 AM (edited) Será por ter 2 ligação a mesma base de dados na mesma página? Eu estou a mudar o código todo do website, pois tinha tudo sem PDO, agora estou a mudar para PDO e ele faz as duas ligações na mesma página uma com PDO e outra sem. Vou tentar remover uma a sem PDO e ver o que dá. EDIT: Experimentei meter numa página apenas: <?php include('../classes/pdo.class.php'); $db_pdo = PDOSingleton::GetObj(); ?> O Erro tem algo a ver com o PDO porque umas vezes a página carrega normalmente outra não.. Não sei o que está aacontecer de errado. A Ligação está assim: self::$_instance = new PDO( 'sqlsrv:server=POSTO32\SQLEXPRESS;database=iGCxEmp001', 'sa', 'estagio', array( PDO::ATTR_PERSISTENT => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::SQLSRV_ATTR_ENCODING => PDO::SQLSRV_ENCODING_UTF8 ) ); Edited June 1, 2012 at 09:35 AM by nunolevezinho
brunoais Posted June 1, 2012 at 09:32 AM Report #459646 Posted June 1, 2012 at 09:32 AM Existe um sistema de lock. O que se passa é que esse teu programa está a entrar em dead lock. Não me parece que possas ter mais que uma ligação à DB ao mesmo tempo. Acabei de experimentar no meu computador e não consegui, parou de funcionar. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
nunolevezinho Posted June 1, 2012 at 11:25 AM Author Report #459685 Posted June 1, 2012 at 11:25 AM (edited) Sendo assim ao abrir a página a primeira vez ele faz $db_pdo = PDOSingleton::GetObj() , mas as proximas vezes nao posso deixar com ele faça novamente o $db_pdo = PDOSingleton::GetObj(); ? Edited June 1, 2012 at 11:25 AM by nunolevezinho
mjamado Posted June 1, 2012 at 11:28 AM Report #459687 Posted June 1, 2012 at 11:28 AM Desliga a persistência da conexão e verifica se continua a acontecer. "Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.
nunolevezinho Posted June 1, 2012 at 11:37 AM Author Report #459689 Posted June 1, 2012 at 11:37 AM Era isso mesmo >.< Obrigado! PS: Agora o fórum já nao tem o Topic Solved ?
scorch Posted June 1, 2012 at 06:19 PM Report #459753 Posted June 1, 2012 at 06:19 PM Sim, tem, embora eu não tenha a certeza se os utilizadores têm acesso a ele, ou se só os moderadores. De qualquer maneira, quem não conseguir marcar como resolvido, basta no fim do tópico, dizer "ok, já está resolvido", ou assim, que eu vejo sempre todos os tópicos e quando encontrar algum resolvido, marco-o. 🙂 PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now