Ankündigung

Einklappen
Keine Ankündigung bisher.

Ist PhalconPHP wirklich die richtige Wahl?

Einklappen

Neue Werbung 2019

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

  • Ist PhalconPHP wirklich die richtige Wahl?

    Hallo,

    kurz zur Vorgeschichte: ich habe jahrelang ein eigenentwickeltes Framework für alle meine Projekte genutzt (diverse lose gekoppelte Hilfsklassen, Formulare, Routing, Sessions, einfaches ORM, alles was in die DB oder an den Nutzer gesendet wurde, wurde grundsätzlich escaped...). Damit konnte ich immer schnell zum Ziel kommen und darauf wurden dutzende Projekte umgesetzt, die auch heute noch ihren Dienst solide verrichten. Dabei habe ich das Framework über die Jahre immer wieder in Teilen grundlegend überarbeitet und verbessert, dabei aber die Abwärtskompatibilität gewährleistet.

    Nun bin ich aber bei zwei der letzten Projekte an eine funktionelle Grenze meines Frameworks gestoßen, die mich zur Erkenntnis brachten, dass eine Anpassung des Frameworks nicht mehr sinnvoll ist. Mein einzig "richtiges" Framework mit dem ich mal gearbeitet habe, war SF2. Und das war mir für mein Gefühl viel zu überladen. Ich bin da eher Minimalist. Ich brauche ein Sessions, Routing, ORM, eine Formular-Bibliothek und das war's - ganz grob.

    Ich habe mich nun die letzten Tage belesen und das minimalste Framework was mir unterkam und zudem performant sein soll (ich benötige es u.a. für Web-Tracking-Projekte, wo wirklich superschnelle Antwortzeiten wichtig sind), ist PhalconPHP. Das kommt leider zum Preis eines vorkompilierten PHP-Moduls. Arbeitet hier jemand damit? Ich habe ein wenig Sorge um die Zukunft. Wenn das Projekt mal eingestellt wird, ist es ja nicht unwahrscheinlich, dass ich irgendwann mal unter PHP 8/9/was-auch-immer keine lauffähige Phalcon-Version mehr bekomme?

    Ich habe mir jetzt mal Lumen installiert, aber so richtig gut fühlt sich das auch noch nicht an. Ich scheue noch ein wenig den Aufwand mich da extra einzuarbeiten, nur um mal ein bestehendes Projekt zu Vergleichszwecken damit nochmal nachzubauen. Aber was für Alternativen gibt es, die wirklich so schlank wie möglich sind, dabei aber nicht nur von einer 1-Mann-Community unterstützt werden?

    PS: Ich sehe gerade, ist im falschen Forum gelandet, kann das bitte jemand verschieben?

  • #2
    War schonmal hier ein Thema, aber relativ begrenzt sag ich mal: https://www.php.de/forum/webentwickl...en-mit-phalcon
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Danke für die schnelle Reaktion. Hm, ja, ich blende bewusst Beiträge aus, die von vor 2017 sind. Da war glaube noch eine Version 1.x im Umlauf. Jetzt die 3.4 - ich denke die Zeiten "haben sich geändert", Bewertungen und Meinungen aus dieser Zeit müssen heute keinen Bestand mehr haben. Grundsätzlich habe ich aber schon gemerkt, dass die Verbreitung von Phalcon - nicht zuletzt wegen des C-Codes - etwas dünn ist.
      Freue mich dennoch über Framework-Alternativen, die in mein Beuteschema passen könnten.

      Kommentar


      • #4
        Mittlerweile verwendet man eh selten ein komplettes Framework, SF 2 und Co bestehen nur noch aus einzelenen Libs die du einfach per Composer installieren kannst. Phalcon ist interessant jedoch glauben viele dass sie umbedingt ganz schnelle Applikation brauchen weil sie denken sie hätten die Last von Facebook und co. Auch Phalcon wird mit ca 100 ms antworten. Meistens liegt das eh am Browser der erstmal HTTPS handshake und co ausführt. Das nächste wären dann Datenbank abfragen und idexe, wenn die Optimiert sind, schaut man sich PHP Version an, mit 7 hat sich ja da schon einiges verbessert. Eventuell einiges Cachen. Und wenn das alles optimiert ist, dann kann man sich dem Framework widmen und ihm die Schuld für schlechte ladezeiten geben.

        Das Tolle an PHP ist, du kannst es wunderbar skalieren.

        Fazit: Nimm Phalcon es sieht interessant aus. Bau deine Logik aber außerhalb des Frameworks so dass du es in ein anderes Framework verpflanzen kannst falls Phalcon wirklich nicht mehr weiter entwickelt wird. Und wenn die Community größer ist, ist es dennoch keine Garantie für Langlebigkeit des Projekts. In meiner "Karriere" als PHP Entwickler habe ich Kohana benutzt und Silex benutzt,beide haben EOL erreicht,trotz großer Community. Habe noch Projekte mit SF1. Alles hat mal ein Ende Wenn du alles schön wegabstrahierst dann brauchst du "nur" die schnittstellen zwischen deiner App und dem Framework anzupassen
        apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

        Kommentar


        • #5
          BlackScorp Danke für Deine sehr solide Meinung. Ja, die Vorstellung von manchen Entwicklern bzgl Last ist schon etwas verzerrt, aber wir haben aktuell ein Projekt am Laufen, wo es um Tracking geht und das hat jetzt schon zig Millionen Requests im Monat. Und ja, das schöne ist, dass man mit Nginx und PHP-FPM recht gut horizontal skalieren kann, damit kann ich den Traffic prinzipiell beliebig hochfahren. Aber beim Tracking geht es tatsächlich um schnelle Antwortzeiten - das ist ja was anderes - und daher ist mir das wichtig kein Schwergewicht wie SF dahinter zu haben.

          Die Geschäftslogik selbst liegt ja eh in den Controllern, die kann man meist unverändert portieren, bisschen schwieriger wird es bei den Views (wenn nicht gerade die gleiche Engine zum Einsatz kommt) und meistens irgendwelchen EventListenern und Formular-Buildern - das noch weiter zu abstrahieren halt ich für nicht sinnvoll. Aber da Phalcon eh schon recht einfach und flexibel gestrickt ist, hast du schon recht, eine Portierung sollte damit nicht unlösbar sein.

          Kommentar


          • #6
            Zum Theme SF: Wenn du symfony/skeleton benutzt, hast du erstmal ein komplett blankes Framework und kannst alle benötigten Komponenten bequeme über Composer hinzufügen. Dank dem Symfony Flex Plugin für Composer, brauchst du diese nicht einmal per Hand konfigurieren. Dies ist auch der Grund warum Silex eingestellt worden ist.

            https://symfony.com/download (Der zweite Punkt "If you are building a microservice, console application or API:")

            Kommentar


            • #7
              Zitat von mohahn Beitrag anzeigen
              Die Geschäftslogik selbst liegt ja eh in den Controllern
              Dort sollte sie eigentlich nicht liegen. Der Controller ist Teil der Präsenstationsschicht und nicht der Logikschicht.

              Kommentar


              • #8
                Zitat von hellbringer Beitrag anzeigen

                Dort sollte sie eigentlich nicht liegen. Der Controller ist Teil der Präsenstationsschicht und nicht der Logikschicht.
                Da magst du Recht haben, ich bin ganz ehrlich nicht sehr fit, was die Theorie angeht. Ich wollte aber grundlegend damit ausdrücken, dass die reine Geschäftslogik soweit abstrahiert ist, dass ein Umzug auf ein anderes Framework keine Hürde sein sollte.

                Ist hier ansonsten jemand, der aus der Praxis ggf. Nachteile aufzählen kann, die bei der Entwicklung/Betrieb mit Phalcon aufgetreten sind? Ich hadere bspw. bei der Anbindung anderer Datenbank-Systeme als MySQL. Oder jemand, der vllt. aus der Praxis etwas zum Overhead/Antwort-Zeiten von SF/Laravel ggü Phalcon berichten kann?

                Kommentar


                • #9
                  Zitat von mohahn Beitrag anzeigen
                  [...] Ich hadere bspw. bei der Anbindung anderer Datenbank-Systeme als MySQL. [...]
                  Das wäre z.B. schon ein Warnsignal. Dem Framework muss es egal sein, welches DB-System du verwendest. So wie ich Phalcon in einigen Minuten interpretiere, sind das ziemlich eng gekoppelte Komponenten, die das MVC bilden. Das ist eher schlecht. Besser ist es, wenn du lose Libraries hast, die zusammen ein "Framework" bilden. Z.B. kannst du bei Phalcon eine beliebige Routing-Library oder DI-Library einsetzen, ohne diese anzupassen? Aus meiner Interpretation der Code-Beispiele in der Doku nicht.
                  [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

                  Kommentar


                  • #10
                    Zitat von mohahn Beitrag anzeigen
                    Nun bin ich aber bei zwei der letzten Projekte an eine funktionelle Grenze meines Frameworks gestoßen
                    Ging mir bei meinem letzten Projekt genauso, nur dass mein Framework WordPress hieß. Nach einigem Rumgesuche habe ich dann angefangen, mich mit Schichtenmodellen (Layered Architekture) vertraut zu machen.


                    Kommentar


                    • #11
                      MOD: Verschoben von PHP-Fortgeschritten
                      The string "()()" is not palindrom but the String "())(" is.

                      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                      PHP.de Wissenssammlung | Kein Support per PN

                      Kommentar


                      • #12
                        Zitat von mohahn Beitrag anzeigen
                        Web-Tracking-Projekte
                        Web-Tracking.
                        Kannst du ein wenig mehr über die Architektur deines Webtrackers erzählen?
                        ​Ist das sowas, was wie (Google) Analytics einen Tracking-Pixel oder eine Javascript-Datei ausliefert und dann verschiedene Aspekte der UI-Nutzung serverseitig dokumentiert?

                        Wäre es da nicht besser, die Auslieferung und Entgegennahme von Trackingdaten über sowas wie Vert.x oder Phoenix abzubilden und die Bewegungsdaten dann zunächst mal in eine MQ zu schreiben und so an php zu übergeben? Ein Webtracker folgt ja nicht dem für php typischen Eingabe-Verarbeitung-Ausgabe-Schema und ist vom Funktionsumfang auch ziemlich statisch, was wieder ein Argument weniger für PHP an der Stelle wäre ...

                        Kommentar

                        Lädt...
                        X