2016-07-22 18 views
1

ich erstellt eine temporäre Tabelle in einer PHP-Datei, und wollen darauf zugreifen in einer anderen PHP-Datei bestehen nicht. Die Skripte werden nacheinander ausgeführt. Ich habe mysqli benutzt und p: an hostname angehängt.Persistent Verbindungen, die zwischen zwei PHP-Skripte

Das Problem ist in meiner zweiten PHP-Datei, ich kann meine temporäre Tabelle zugreifen. Also wollte ich wissen, ob das möglich ist oder nicht? Und wenn ja wie? Verwende WAMP Server.

+1

Zeigen Sie uns, was Sie ausprobiert haben. ** Erinnerung **: Wir sind nicht hier, um Code für Sie zu erstellen. – Nytrix

+1

Nach Ihrer Anforderung zu urteilen, brauchen Sie keine temporäre Tabelle, sondern eine reale Tabelle. In diesem Fall verschwindet Ihr Problem einfach, da beide Skripts auf dieselbe Datenquelle zugreifen können. – Mjh

+0

@Mjh, ich wollte die temporäre Tabelle verwenden, weil wenn ich im zweiten Skript Daten von ihm lese, und nach dem es fallen. Ich denke, in Bezug auf die Leistung könnte es besser sein, die temporäre Tabelle zu erstellen, aber ich könnte falsch liegen. –

Antwort

0

Nicht möglich, direkt. Temporäre Tabellen werden zerstört, wenn die Verbindung geschlossen wird, um sie einzurichten. Wenn Ihr "create" -Skript beendet wird, wird seine DB-Verbindung geschlossen und mysql bereinigt - einschließlich der Zerstörung dieser temporären Tabelle.

Das heißt, wenn die „Verwendung“ Skript up feuert es eine neue Verbindung bekommt, ohne von dem Zeug, dass das erste Skript tat.

Es gibt persistente Verbindungen in PHP, aber diese Verbindungen existieren in einem Pool, und es gibt keine Kontrolle darüber, welche Verbindung irgendwelche besonderen Skripten aus diesem Pool wird. Sie können Glück haben und erhalten die gleiche Verbindung für zwei verschiedene Skripte, aber es ist rein zufällig.

Sie würden einige andere 3. Skript benötigen, die die MySQL-Verbindung zu öffnen, so dass die temporäre Tabelle statt kontinuierlich zu halten, arbeitet. Und deine anderen zwei Skripte würden mit diesem dritten kommunizieren.

+1

In 'WAMP's Fall könnte das, was du geschrieben hast, wahr sein, aber ich habe einen Test durchgeführt. Ich verwende 'php-fpm' mit' pm.start_servers = 2' und 'pm.max_requests = 0', damit der Prozess für diesen Test nicht beendet wird. Ich habe eine Verbindung zu MySQL hergestellt, indem ich eine dauerhafte PDO-Verbindung hergestellt habe. Im Terminal von MySQL vergewissere ich mich, dass es eine hergestellte Verbindung gibt, indem ich SHOW PROCESSLIST \ G; ausstelle, die eine Verbindung mit einer ID von 6 zeigt. Ich "hammere" meinen PHP-Endpunkt, der eine Auswahlabfrage durchführt. Nach 500 HTTP-Anfragen zeigt die Ausgabe von 'SHOW PROCESSLIST \ G;' ein und dieselbe aktive Verbindung an. – Mjh

+0

Wenn Sie nur EINEN Benutzer der Seite haben, und NIEMALS 2+ parallele Anfragen auf der Seite haben, dann haben Sie wahrscheinlich immer nur 1 Person im Pool. Aber sobald du 2+ Skripte parallel laufen hast, werden sie ZWEI Verbindungen herstellen, und jetzt sind alle Wetten deaktiviert. –

+1

Die Verwendung nicht persistenter Verbindungen und die Ausgabe von 'SHOW PROCESSLIST \ G;' zeigt einen anderen Verbindungsprozess. Angesichts der Tatsache, dass ich vielleicht falsch liege, würde ich gerne sehen, was andere Leute darüber denken, da ich weiß, dass hastige Tests definitiv irgendwo zu Fehlern führen :) – Mjh

0

Von http://php.net/manual/en/mysqli.persistconns.php

Die ständige Verbindung der mysqli-Erweiterung jedoch Built-in bietet Bereinigungsbehandlungscode. Die Bereinigung von mysqli durchgeführt beinhaltet:

(lohnt sich, die andere Dinge zu lesen, aber das wichtige Bit)

  • Schließen und fallen temporäre Tabellen

Kurz ist eine temporäre Tabelle nur vorübergehend. Es ist nicht für andere Zwecke gedacht, als einige Daten für eine bestimmte Operation vorübergehend zu speichern. Wenn Sie eine dauerhaftere Sache möchten, sollten Sie eine konkrete Tabelle mit einer Speicher-Engine verwenden.

+0

Ja, ich habe das gelesen, dachte aber immer noch, es wäre möglich. konkrete Tabelle mit einem Speicher-Speicher-Engine bedeutet? –

+0

http://dev.mysql.com/doc/refman/5.7/en/memory-storage-engine.html – apokryfos

Verwandte Themen