Ich arbeite an einem Projekt, das meinen Server xyz.com benötigt, um POST/GET-Antworten von abc.com (SMS-Gateway-Provider) an xyz.com/callback.php zu erhalten.Minimieren der MYSQL-Verbindung vom Webhook-Callback
Unten ist, wie ich zur Zeit die Antworten auf callback.php
1. Griff Erhalten Sie die POST-Daten von abc.com (Dieser Beitrag enthält eine eindeutige ID)
2. Verbinden Sie mysql Datenbank- und UPDATE-Benutzer WHERE messageId = Same_ID_from_POST_data
Dies funktioniert und Daten werden aktualisiert. Es verursacht jedoch wegen der Tausenden von MYSQL-Verbindungen CPU-Überlastung. Dies liegt daran, dass callback.php mit mysql eine Verbindung herstellt und die Datenbank aktualisiert, sobald für jede einzelne Nachricht eine Übermittlungsbestätigung vom api-Server vorliegt.
Gibt es eine Best Practice, um die Anzahl der Verbindungen mit MYSQL zu minimieren?
Ich dachte über folgendes nach, ich bezweifle jedoch, ob es einen Sinn ergibt.
1. Empfangen Sie Postdaten vom api-Server wie zuvor.
2. Stattdessen MySQL aktualisieren, schreibe ich einfach in eine TXT-Datei mit dem folgenden Code
$ query. = "Update Benutzer Status gesetzt = '$ post_data_for_status', wo einzigartigen $ post_unique '= ';
Dann benutze ich Cron, um eine PHP-Datei zu starten, die mysqli_multi_query ($ connection, $ query) verwendet, um die Tabelle zu aktualisieren, so dass es eine einzige Verbindung ist. Nach dem Update entferne ich einfach die .txt-Datei
Auch wenn die obige Methode funktionieren wird, weiß ich nicht kn wie es geht. Ich bin mir sicher, dass es eine bessere Alternative gibt.
Irgendwelche Ideen bitte und Entschuldigung für lange Epistel.
Ich denke, was ich im Grunde will, ist die beste Methode, Lieferbelege von externen API Callback ohne Verbindung zu MYSQL pro einzelnen Empfang zu behandeln. –
Die PHP-APIs zur Verwendung von MySQL ('mysqli' und' PDO') haben beide eine Verbindungs-Pooling-Funktion. Daher sollte Ihr php-Webhook-Responder keine neue Datenbankverbindung aufbauen, sondern eine vorhandene wiederherstellen, jedes Mal, wenn ein Webhook darauf trifft. Ihr Problem scheint also die Leistung Ihrer 'UPDATE'-Abfrage zu sein. Können Sie Ihre Frage bearbeiten, um uns die Definition der Benutzertabelle anzuzeigen, einschließlich der Indizes? Wir müssen auch die genaue Abfrage sehen, die Sie zum 'UPDATE' verwenden. –
Beachten Sie, dass die Dateiwarteschlange ein Sicherheitsrisiko darstellt. Wenn ein Absturz auftritt, kann eine bestimmte Anzahl von Belegen verloren gehen. –