2012-04-13 8 views
-1

Ich habe eine Seite bekam, die regelmäßig viele jQuery AJAX-Anfragen macht, bittet um eine Antwort von einer PHP-Funktion als solche:Minimieren PHP-Prozesse

$.ajax({ 
     url: "functions.php", 
     type: "POST", 
     data: {action : 'getData', id : draftid}, 
     dataType: "html" 
    }).done(function(output) { 
     $("#myDiv").html(output); 
    }); 

Nun, wenn ich bei den laufenden Aufgaben schauen auf meine Während ich diese eine Seite geöffnet habe, sehe ich vier oder fünf PHP-Aufgaben. Ich plane, diese Seite gleichzeitig über mehrere Seiten laufen zu lassen, und ich habe das Gefühl, dass mein Gastgeber darüber nicht glücklich sein wird.

Gibt es eine andere Methode, die ich verwenden kann, um jQuery die Informationen zu bekommen, die ich von den PHP-Skripten bekomme (hauptsächlich MySQL-Anfragen), um die Aufgabenmenge und CPU-Auslastung zu minimieren?

EDIT: Die functions.php-Datei ist im Grunde nur eine switch-Anweisung, die die angeforderte Funktion aufruft, die eine SQL-Anfrage erstellt und die relevanten Daten zurückgibt.

Ich weiß nicht die Besonderheiten, was die PHP-Aufgaben sind. Wenn ich oben laufe, sehe ich viele Prozesse mit dem Befehl 'php'. Ich bin kein Linux-Profi, also gibt es vielleicht einen Befehl, den ich ausführen kann, um herauszufinden, was diese Prozesse genauer machen?

+0

Wenn Sie nach geänderten Daten suchen und keine Daten senden, können Sie Kometen versuchen. Aber das wird nur viele kurze Prozesse mit weniger langen austauschen. – DampeS8N

+1

Unmöglich zu sagen, ohne Ihren PHP-Code zu sehen. Außerdem, was sind die vier Prozesse? Steuern sie? Sind sie hartnäckig? Cachen Sie gegebenenfalls Daten, um MySQL zu entlasten? Das sind alles Dinge, die man beachten sollte. – MetalFrog

Antwort

1

Können Sie alle Anfragen in einer Anfrage kombinieren? Sie müssen die Rückgabedaten irgendwie parsen, aber das ist keine große Sache. Haben Sie die Kontrolle über den Server? Wenn dies der Fall ist, könnten Sie einen Webserver mit Fast-CGI versuchen, um die Anzahl der laufenden Prozesse und Pool-Datenbankverbindungen zu steuern.

0

Optimierte SQL-Querys, vielleicht Caching-Systeme erstellen, wenn es möglich ist? (Sie wissen nicht, was du Programmierung dort!)

Sie können auch auf einen anderen Webserver wechseln, die mehr performant ist (ich würde es vorziehen, das Litespeed etwa 60% schneller als Apache ist)

auch nicht wundern, wenn Apache führt mehrere Instanzen gleichzeitig aus, das ist normal bei Apache.

0

Ohne mehr Informationen zu wissen, kann ich nicht viel sagen, aber nein, Sie können nicht direkt mit einem MySQL-Server von Javascript verbinden. Je nachdem, welche Daten Sie benötigen, können Sie die Back-End-Verarbeitung erheblich einschränken.

Einige generische Ideen:

  • Ihre ajaxs Anfragen in einem einzigen "Herzschlag"/update Anfrage Kombinieren Sie, so dass Sie nur

  • 1 ausgeführt Prozess Wenn Sie einige Backend-Caching von db Daten tun können mit somthing wie memcache

  • Profil und optimieren Sie Ihre aJAX-Anfragen XDebug mit und webgrind