PHP und MySQL - Cache

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP und MySQL - Cache

    Hi,

    wie kann man mit dem Cache vom Apache arbeiten?
    Wie rein schreiben, wie auslesen etc.

    Hintergrund:
    mit PHP aus der MySQL DB Daten auslesen, in den Cache laden und immer wieder per php darauf zugreifen.
    Nur wie geht das?
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

  • #2
    *hochschieb*

    keiner ne idee

    im manual find ich auch nichts
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

    Kommentar


    • #3
      Original geschrieben von Benny-one
      *hochschieb*
      dein posting ist von heute morgen, also hör gefälligst auf zu drängeln!
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Ähm soviel ich weis wird in der php.ini von sich aus schon Speicher allokiert. Zumindest kann man da die Größe des zu allokierenden Speichers einstellen. Sprich die Daten werden sowieso im cache gehandelt. Bis auf Inserts, die angeblich gleich in die Datenbank geschrieben werden. Aber was hast Du denn genau vor?
        Hört sich für mich nach Hochverfügbarkeitssystem an.
        Ansonsten ist hier bei uns niemandem eine Art malloc() Funktion wie unter C oder C++ für PHP bekannt und der einzige, der sich mit
        o.g. Systemen auskennt ist nicht im Hause.
        Aber vielleicht kann man das Problem ja auch anders lösen, wenn man geneueres weis. Sprich Wozu das ganze?Sollen die Abfragen beschleunigt werden? Oder erst zu bestimmten Zeiten oder nach Ereignissen in die Tabellen übertragen werden?
        Was ist mit temporären Tabellen? Könnten die nutzen?
        Oder Du speicherst die Abfragen in einer Datei und fragst die dann ab und überträgst das ganze dann am Ende wieder in die Datenbank.
        Aber das sind alles nur spekulationen.
        Also keine Panik auf der Titanic, das Schiff sinkt so oder so.
        Und wer lange genug schwimmen kann lebt morgen auch noch.
        Das Leben ist kein Ponyhof.

        Kommentar


        • #5
          ja, also es sollen alle banner in den cache geladen werden, um die mysql db zu entlasten.
          weil ich net weiß, wie die das verkraftet ich mein, schaft die locker 10.000.000 querys und berechnungen in 3 stunden?
          Sunshine CMS
          BannerAdManagement
          Borlabs - because we make IT easier
          Formulargenerator [color=red]Neu![/color]
          Herkunftsstatistik [color=red]Neu![/color]

          Kommentar


          • #6
            - bannercodes auslesen
            - in geeigneter form in der datei banners.bib speichern


            wenn das erstellungsdatum länger als x sekunden zurückliegt, machst du obenstehendes, wenn nicht, liest du die bannercodes aus der datei banners.bib

            vorausgesetzt die platte in deinem server schafft 10.000.000 querys und berechnungen in 3 stunden

            oder du lernst asp, da gibt's ein application-objekt, in dem du die daten speichern könntest... *g*
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              ja, also es sollen alle banner in den cache geladen werden, um die mysql db zu entlasten.
              du holst die bilder da raus, oder nur die verweise?

              Kommentar


              • #8
                @tobi: ich hole die daten: url, image (pfad zur bilddatei), max clicks/views next hour etc. solche daten hohl ich da raus.
                Sunshine CMS
                BannerAdManagement
                Borlabs - because we make IT easier
                Formulargenerator [color=red]Neu![/color]
                Herkunftsstatistik [color=red]Neu![/color]

                Kommentar


                • #9
                  und max clicks und views next hour wolltest du doch gleich wie cachen?
                  musst du da nicht bei jedem aufruf eines deiner banner irgendwo irgendwas speichern?
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    naja ziel ist es ja, das man nicht pro user pro aufruf die DB öffnet und daten ausliest, sondern die erstmal ausm cache nimmt, wenn man dann im cache feststellt, das ein banner seine maxview erreicht hat, das mann den dann ausm cache löscht und in der DB den banner auf inactive setzt
                    Sunshine CMS
                    BannerAdManagement
                    Borlabs - because we make IT easier
                    Formulargenerator [color=red]Neu![/color]
                    Herkunftsstatistik [color=red]Neu![/color]

                    Kommentar


                    • #11
                      also willst du pro user pro aufruf eine datei öffnen, auslesen, verändern, zurückschreiben und schließen?

                      nicht zu vergessen,d ass du die eventuell noch sperren solltest vorher...
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        Hab ich das richtig verstanden oder war das n Tippfehler?
                        10 Millionen Abfragen in 3 Stunden?
                        Das sin nach meiner Berechnung 308,64196 Abfragen und! Berechnungen pro sekunde. Und das 3 stunden kontinuierlich?
                        Ich kenne da jemanden dem ist die mysql Datenbank nach nicht mal 15.000 Abfragen hintereinander weg weggebrochen.
                        Abgesehen von der Hardware, wie schon erwähnt.
                        Frag mal bei SUN oder Siemens nach, ob die Dir eins Ihrer Schlachtschiffe zur Verfügung stellen zwecks tauglichkeitstest.
                        Da kannste dann clustern und patitionieren usw. im laufenden Zustand. (Hab ich selbst gesehen auf der Cebit)
                        Spass beiseite, ich glaub ehrlich nicht das Du das hinbekommst mit der mysql Datenbank. Mit oder ohne cache. Aber probiers halt mal aus.
                        Dann weist Du ob geht.
                        Viel Glück
                        Wendel
                        Das Leben ist kein Ponyhof.

                        Kommentar


                        • #13
                          zwei sachen fallen mir da spontan ein :

                          1) mysql query cache

                          speichert das ergebns einmal abgesetzter queries. könnte sichin deinem fall aber auch negativ auswirken da bei vielen schreiboperationen der cache zu oft geleert wird. näheres unter http://dev.mysql.com/doc/mysql/en/Qu...iguration.html

                          2) index und tabellen optimieren

                          du soltest deine queries so genau wie möglich analysieren und optimieren. vor allem bei den indizes und tabellen typen kann mann da einiges rausholen.

                          3) mysql optimieren

                          es gibt unzählige einstellungen die direkten einfluss auf dieperformance haben, vor allem die verschiedenen internen buffer für keys und tables.

                          4) datenmodell optimieren

                          hängt sehr eng mit 2) zusammen, aber eine optimierung der tabellen strukturen bringt meistens einen recht grossen performance schub.

                          5) clustering

                          es gibt einige kommerzielle clustering softwares die es erlauben mehrere low end server zu einem verbund zusammen zuschalten und somit eine bessere verfügbarkeit / erreichbarkeit zu erreichen. das wird allerdings nicht ganz so billig werden (: aber bei 10 mio hits (;

                          6) shm caching

                          hier kannst du unter linux die oben erwähnten funktionen nutzen oder du benutzt zb TuckMMCache der auch einen shm cache bietet. es gibt auch noch einen verteilten shm cache namens memcache der es erlaubt mehrer server als "riesen" shm zu benutzen. das ganze ist aber relativ kompliziert, da du dafür einen relativ gut gekapselten persistenz layer brauchst. sollte aber auch einiges an performance bringen.

                          gruss
                          Sike

                          Kommentar

                          Lädt...
                          X