Bdd en methode static devient asynchrone
Posté : 18 févr. 2021, 08:35
Bonjour,
J'ai récemment modifier mon accès à ma base de données.
Avant je faisait de include vers un .php qui contenait une variable $bdd, permettant de se connecter.
J'ai changé cela vers une classe abstraite et des méthodes static permettant de se connecter.
Ça marche bien, lorsque j'ai besoin de me connecter après un ajax (par exemple), je fais un :
Mais mon problème est étrange (je suis débutant en php et POO).
J'ai dans mon application des créations de fichier excel, coté serveur, qui peuvent prendre du temps à être crée (lié à des requêtes assez longue).
Avant lorsque je lançais via ajax mon fichier .php (réalisant le fichier excel), je voyais le status 'waiting', mais je pouvais naviguer sur mon application, en attendant que la réponse soit 200 (et m'envoyait le .xlsx).
Maintenant, le serveur attendant la réponse 200 avant de répondre à d'autre demande, ce qui bloque la page.
Comme une forme d'asynchrone.
J'ai fait un singleton mais pareil.
En créant une nouvelle class[/code], il accepte la navigation.
J'ai essayé en faisant des instances (plus de static ni abstract class), mais pas de changement.
Voici ma class :
Merci beaucoup à toute la communauté
et en espérant avoir été clair.
J'ai récemment modifier mon accès à ma base de données.
Avant je faisait de include vers un .php qui contenait une variable $bdd, permettant de se connecter.
J'ai changé cela vers une classe abstraite et des méthodes static permettant de se connecter.
Ça marche bien, lorsque j'ai besoin de me connecter après un ajax (par exemple), je fais un :
Code : Tout sélectionner
$dbb = Database::getPDO()J'ai dans mon application des créations de fichier excel, coté serveur, qui peuvent prendre du temps à être crée (lié à des requêtes assez longue).
Avant lorsque je lançais via ajax mon fichier .php (réalisant le fichier excel), je voyais le status 'waiting', mais je pouvais naviguer sur mon application, en attendant que la réponse soit 200 (et m'envoyait le .xlsx).
Maintenant, le serveur attendant la réponse 200 avant de répondre à d'autre demande, ce qui bloque la page.
Comme une forme d'asynchrone.
J'ai fait un singleton mais pareil.
En créant une nouvelle class
Code : Tout sélectionner
Database222::getPDO()J'ai essayé en faisant des instances (plus de static ni abstract class), mais pas de changement.
Voici ma class :
Code : Tout sélectionner
abstract class Database
{
private static $instance = null;
private static $PDOPass = 'XXXXXXX';
public static function getPDO()
{
session_status() == PHP_SESSION_NONE ? session_start() : null;
if (self::$instance == null) {
try {
self::$instance = new PDO('pgsql:host=localhost;dbname=XXXXXXX', $_SESSION["role"], self::$PDOPass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
} catch (Exception $e) {
die('Erreur : ' . $e->getMessage());
}
};
return self::$instance;
}
}