[PHP] Autocomplete wie bei facebook

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Atkaz, 11. Dezember 2011 .

  1. 11. Dezember 2011
    Autocomplete wie bei facebook

    Hallo Leute,

    ich bin gerade dabei eine autocomplete-funktion wie bei facebook zu erstellen. Nun wollte ich fragen, ob jemand sich da bereits mit befasst hat. Die eigentliche Frage bezieht sich drauf, wie die namen ausgelesen werden sollen, aus der DB oder einer text Datei. Wobei das mit der textdatei etwas schwierig wird, da man ja für jeden benutzer eine Textdatei mit seinen Kontakten etstellen und gegebenfallst aktualisieren muss. Wenn aus der DB, wird diese dann nciht zu sehr belastet, wenn bei jedem tastenschlag eine Abfrage erfolgt?

    mfg
    atkaz
     
  2. 11. Dezember 2011
    AW: Autocomplete wie bei facebook

    ja die daueranfragen an die db bei autocomplete sind ein ernsthaftes problem. solche features zwingen den mysqld bei vielen gleichzeitigen benutzern recht schnell in die knie.

    abhilfe schafft hier ein inteligenter cache - am besten auf RAM basis (memcache), da dateizugriffe ebenfalls das system verlangsamen bei solchen sachen.

    d.h. du initialisierst deinen autocompleter beim focus/ersten tastendruck auf dein input-feld, lädst dir ALLE relevanten daten des benutzers in den speicher und durchsuchst eben diesen bei weiteren interaktionen.

    noch performanter wäre, wenn du diese relevanten daten bei deim init direkt dem client übergibst und dann per javascript diese daten filterst. das reduziert zum einen die anfragen per ajax und macht das ganze erheblich schneller.

    du kannst diese daten dann auch dauerhaft im browser ablegen und nur beim überschreiten eines bestimmten zeitpunktes erneuern.
     
  3. 11. Dezember 2011
    AW: Autocomplete wie bei facebook

    Was hälst du von der Idee die Sachen in einer Session zu speichern? Diese würde dann bei der ersten Anfrage erstellt, und dann mit hilfe von regulären ausdrücken ausgelesen.

    Die session könnte wie folgt aussehen :

    user[0][Username] =...
    user[0][Vorname] =...
    etc.

    Meinst du, dass es von der Performance viel schlechter wäre, als wenn man das, wie du bereits beschrieben hast, clientseitig umsetzt??

    mfg
    atkaz
     
  4. 11. Dezember 2011
    AW: Autocomplete wie bei facebook

    Eine Session ist je nach Einstellung ebenfalls Mysql oder Datei basierend.
    Daher entsteht hier das selbe Problem.

    Die Autovervollständigung von Facebook Funktioniert um einiges Komplizierter um den 400 Millionen Benutzern diese Funktion zur Verfügung zu stellen:
    http://www.facebook.com/notes/facebook-engineering/the-life-of-a-typeahead-query/389105248919

    //Edit: Im übrigen wird dort, wie von Murdoc bereits erwähnt, Memcache erwähnt
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.