REDIS Cache nutzen

  • Dies ist eine vorgefertigte Schablone, die bei der Formulierung von Problemen unterstützen soll. Bitte die folgenden Angaben möglichst vollständig ausfüllen.


    - Welche Version von pd-admin wird eingesetzt?
    4.06
    - Welche Version der Serverumgebung wird eingesetzt?
    0.276
    - Welche Fehlermeldung erhalten Sie?
    - Wie sind die problematischen Dienste konfiguriert?
    Standard
    - Welche Logfile-Einträge (zB. Webserver- oder Mail-Logfile) gibt es?


    Ich habe den Redis Server installiert. Nun muss ja die erweiterung für REDIS in php geladen werden.


    Man braucht ja für PHP die Library um es im Skript nutzen zu können. Wie sollte man diese nutzen bzw einbinden.


    Meine Idee wäre es diese über Debian zu installieren und dann in PD-Admin einzubinden.


    In der SE habe ich nichts gefunden das sowas mitgeliefert wird.

  • Wer hat es schonmal probiert über PECL - Redis zu installieren.


    Wenn ich von der Webseite wie oben geschrieben die Befehle nehme bekomme ich folgenden Fehler:

    Code
    root@vmd16158:/usr/local/pd-admin2/bin# ./pecl install redis
    pecl/redis requires PHP (version >= 5.3.0, version <= 7.9.99), installed version is 4.4.9
    No valid packages found
    install failed
  • Ich habe es bei mir für PHP 7.2 wie folgt installiert:


    Code
    $ cd /usr/local/pd-admin2/php-7.2.4/bin/
    $ export PATH=/usr/local/pd-admin2/php-7.2.4/bin:$PATH
    $ pecl install redis


    Damit wurde /usr/local/pd-admin2/php-7.2.4/lib/php/extensions/no-debug-non-zts-20170718/redis.so installiert. Dies kann analog für jede PHP Version durchgeführt werden. Sicherlich kann dies auch per Skript automatisiert werden.


    Für die Installation wird auch autoconf benötigt:


    Code
    $ yum install autoconf
  • Zitat

    Original von Sumeragi
    Sicherlich kann dies auch per Skript automatisiert werden.


    Habe mich mal dran gemacht :)



    Für


    Code
    yum -y install autoconf


    muss bei Debian Systemen natürlich das passende Äquivalent genutzt werden. Ausgeführt werden kann es dann mit


    Code
    $ pecl.sh redis


    Damit wird dann die redis Extension für alle PHP Versionen >= PHP 5.3 installiert.

    • Offizieller Beitrag

    Hallo,


    [quote]Original von Sumeragi


    warum merkst Du Dir den PATH und setzt ihn danach wieder zurück? Das ist doch unnötig ;) Muss es nicht auch ./pecl install "$1"lauten?


    mfg
    Twilo

  • Zitat

    Original von Twilo
    warum merkst Du Dir den PATH und setzt ihn danach wieder zurück? Das ist doch unnötig ;)


    Ja, im Grunde schon. Nur wächst die PATH Variable durch die Schleife immer weiter an. Am Ende sieht es dann so aus:


    Code
    /usr/local/pd-admin2/php-7.2.4/bin:/usr/local/pd-admin2/php-7.2.3/bin:/usr/local/pd-admin2/php-7.1.16/bin:/usr/local/pd-admin2/php-7.1.15/bin:/usr/local/pd-admin2/php-7.0.29/bin:/usr/local/pd-admin2/php-7.0.28/bin:/usr/local/pd-admin2/php5-5.6.35/bin:/usr/local/pd-admin2/php5-5.6.34/bin:/usr/local/pd-admin2/php5-5.5.38/bin:/usr/local/pd-admin2/php5-5.4.45/bin:/usr/local/pd-admin2/php5-5.3.29/bin:/usr/local/pd-admin2/php5/bin:/usr/local/pd-admin2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin


    Mir ist schon bewusst, dass die Variable nur während der Skriptlaufzeit so aussieht und dies die weitere Ausführung auch nicht beeinflusst... mich störte es aber irgendwie :P


    Zitat

    Original von Twilo
    Muss es nicht auch ./pecl install "$1"lauten?


    Richtig, danke! Der Fehler fiel mir nicht auf, da /usr/local/pd-admin2/bin/ in meiner PATH Variable enthalten ist und dort auch eine pecl Binary liegt. So sollte es aber richtig sein:


    • Offizieller Beitrag

    Hallo,


    dann mache es doch so


    mfg
    Twilo

  • Danke für die Verbesserungen! So ist der Code auch ordentlicher ;) Ich habe ihn auch noch mal etwas abgeändert. Einige Semikolons werden nicht benötigt und statt


    Code
    PATH="${DIR}:${PATH_O}" ${DIR}/pecl install "$1";


    steht dort nun


    Code
    PATH="${DIR}:${PATH_O}" ${DIR}/pecl "$@";


    Damit kann man dann u.a. Extensions wieder deinstallieren und upgraden.


    Ich habe dazu mal ein HowTo Thread erstellt, da dieser Thread soweit erledigt ist.


    PHP Extensions mit PECL installieren

    • Offizieller Beitrag

    Sumeragi


    Du hast jetzt den Aufruf von 'PATH="${DIR}:${PATH_O}" ${DIR}/pecl install "$1";' getrennt, ich weiß jetzt nicht, ob die PATH Variable dann richtig übernommen wird, wenn man es trennt, muss man die meines Wissens exportieren.


    also entweder

    Code
    PATH="${DIR}:${PATH_O}" ${DIR}/pecl "$@";


    oder

    Code
    export PATH="${DIR}:${PATH_O}";
    ${DIR}/pecl "$@";


    durch die erste Variante, wird die normale PATH Variable nicht verändert, sondern nur die PATH Variable für den Befehl der dahinter steht gesetzt.


    mfg
    Twilo

  • Wenn ich mir die Zeilen ausgeben lasse kommt:


    Code
    [...]
    /usr/local/pd-admin2/php-7.2.5/bin:/usr/local/pd-admin2/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
    /usr/local/pd-admin2/php-7.2.5/bin/pecl install blub


    Sieht mir also korrekt aus. Ich lasse mich aber gern eines Besseren belehren.


    Die Semikolons habe ich teils entfernt, da diese afaik nur zum Trennen von Befehlen in der gleichen Zeile benötigt werden. Ein Zeilenumbruch reicht der Bash zur Trennung aus.

  • Zitat

    Original von Twilo
    ja einzeln sieht es korrekt aus, ist nur die Frage, ob es an den neuen Befehl korrekt übergeben wird, ich vermute nicht ;)


    Ja verstehe. Wobei dies doch nur gemacht werden muss, wenn eine neue Shell (Subshell) gestartet wird. Dies passiert hier ja nicht ?(


    Analog dazu kann ich ja einfach PATH=/usr/local/pd-admin2/php-7.2.5/bin/:$PATH setzen. Wenn man nun php -v oder pecl install redis aufruft, werden die Binaries aus /usr/local/pd-admin2/php-7.2.5/bin/ verwendet. Gleiches gilt doch dann auch für das Skript.


    Ich habs jetzt erst einmal in einer Zeile belassen, da dies am Ergebnis nichts ändert ;)