Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP - JS Verarbeitungs-Reihenfolge

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP - JS Verarbeitungs-Reihenfolge

    Meine Herren und Damen,

    ich habe ein Problem mit der Reihenfolge in der mein Script abgearbeitet wird.

    Da alles während der run time passiert und ich meine Klassen nicht unbedingt komplett umschreiben möchte, frag ich euch mal

    Im groben sollte es so sein: PHP holt Daten - PHP lädt JS File und JS Funktionen - Image Link wird aus der JS File per Ajax an ein weiteres PHP Script geschickt - Das speichert das Image - Back zu der Klasse - Daten inkl. Images werden in PDF eingebaut..

    Ja der Fehler meinerseits liegt jetzt darin, dass die Images erst nach dem Ablauf des ganzen PHP Scripts erstellt werden.. die ich aber brauchen würde, da sonst das PDF immer ohne Image auskommen muss..

    Ich habe jetzt auch schon versucht den Aufruf des weiteren PHP Scripts in der folgenden Funktion nach dem JS Aufruf durch eine zeitbasierte Rekursion zu verzögern, aber das bringt nichts da das Erstellen der Images erst am Ende abgearbeitet wird und nicht an der Aufrufstelle..

    Gibt es eine Möglichkeit das Ausführen und Erstellen meiner JS Images vorzulegen?

    Quasi:
    function datenholen();
    function datenanjsschicken();
    ->file.js für image Link -> per Ajax an speichern.php -> speichert Image(leider erst nach pdf();)
    function pdf(); // Holt Images aus Folder und baut ein

    Danke schon mal!
    grotesk


  • #2
    Versteh ich nicht. Was heißt "PHP lädt JS File und JS Funktionen"? JavaScript wird meistens im Browser ausgeführt. Was genau passiert da drin? Was ist "Image Link wird aus der JS File per Ajax ... geschickt"? Kann ich mir grade nich vorstellen.

    Bitte mal bisschen mehr Pseudo-Code + Ablauf Server / Browser.
    Lerne Grundlagen | Schreibe gute Beispiele | PDO > mysqli > mysql | Versuch nicht, das Rad neu zu erfinden | Warum $foo[bar] böse ist | SQL Injections | Hashes sind keine Verschlüsselungen! | Dein E-Mail Regex ist falsch

    Kommentar


    • #3
      Eine externe JS File wird geladen -> wenn ich alle Daten per PHP geholt habe übergebe ich per echo "<script> blabla $daten..."; an eine JS Funktion -> die erstellt mit den Daten ein Diagramm und liefert einen Image Link in Form von "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA...." Den schicke ich über AJAX an eine .php File die das dann speichert.. und das 7x pro PDF weil ich 7 verschieden Datensätze hole.. mit ein Paar Debug Ausgaben war es immer das selbe.. es durchläuft 7x die Schleife.. kreiert das PDF mit den 7 Datentabellen und speichert erst DANACH 7 Images..

      Kommentar


      • #4
        Klingt wahnsinnig kompliziert und unnötig. Zeig mal bitte endlich Code, so kommt doch keiner weiter hier mit diesen irrwitzig schlechten Versuchen, den eigenen Code zu verstehen
        Lerne Grundlagen | Schreibe gute Beispiele | PDO > mysqli > mysql | Versuch nicht, das Rad neu zu erfinden | Warum $foo[bar] böse ist | SQL Injections | Hashes sind keine Verschlüsselungen! | Dein E-Mail Regex ist falsch

        Kommentar


        • #5
          Klingt wahnsinnig kompliziert und unnötig -> zeugt eher davon, dass du noch nicht versucht hast einen JS Chart zu speichern.. und nein, es hat mir keine PHP Chart Library gefallen. Punkt

          ich verstehe meinen Code sehr gut, k.A. was du für Probleme hast.. und ich poste hier keine paar hundert Zeilen Code.. Außerdem funktioniert alles einwandfrei, außer der Tatsache, dass die Image Erstellung erst im nachhinein erledigt wird obwohl der Aufruf "in der Mitte" passiert.. Und wenn ich dir sogar schreiben muss wie man Daten von PHP an JS übergeben muss, sollte sich viell. jemand anderes daran versuchen. Nicht sinnergreifend bzw. strukturergreifend lesen können und andere benörgeln.. bravo

          Im Grunde geht´s darum ob man die Ausführung JS iwie erzwingen bzw. vorverlegen kann.. Ich hoffe dass kommt auch ohne Code bei dir an.. Danke

          Kommentar


          • #6
            Ich habe null Ahnung, wie dein Code funktioniert. Aus deinen Erläuterungen versteh ichs auch nicht, sorry. Poste doch zumindest Pseuo-Code wie es passiert, oder mach ein kleines Beispiel, oder sonst was.
            Lerne Grundlagen | Schreibe gute Beispiele | PDO > mysqli > mysql | Versuch nicht, das Rad neu zu erfinden | Warum $foo[bar] böse ist | SQL Injections | Hashes sind keine Verschlüsselungen! | Dein E-Mail Regex ist falsch

            Kommentar


            • #7
              Klingt als müsstest du mal den RemoteFlash updaten und rebooten, dann sollte das Javascript die Bilder schneller zurückgeben
              Relax, you're doing fine.
              RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

              Kommentar


              • #8
                Ich verstehe schon was er meint. Und ich kann dir auch ganz genau sagen was dort schief läuft. Javascript wird grundsätzlich vom Browser (ergo nachdem PHP durchgelaufen ist) ausgeführt.

                Das was du dort versuchst kann so garnicht funktionieren. Solltest dich vielleicht nochmal informieren wie PHP funktioniert und wie JavaScript funktioniert, anstatt die Leute hier anzupöbeln dass du angeblich Ahnung hast.
                Zitat von derwunner
                "Ein FISI ist auf gut-deutsch der Netzwerker. Das heißt Du gehst rauß zum Kunden oder auf die Straße und verlegst Leitungen" - derwunner 2015

                Kommentar


                • #9
                  Du kannst während eines Scriptdurchlaufs kein Javascript initiieren und gleichzeitig die Antwort vom Client auswerten. Das benötigt einen 2. Scriptstart.
                  Schau dir mal an, wie hier Javascriptinformationen in PHP geholt werden. Ist schon etwas älter, kann als Anregung dienen.
                  Am Rande bemerkt: Dein Ton gefällt mir nicht.

                  LG jspit
                  PHP-Klassen auf github

                  Kommentar


                  • #10
                    Danke für die Antworten.

                    Zitat von CrocoBlack Beitrag anzeigen
                    Solltest dich vielleicht nochmal informieren wie PHP funktioniert und wie JavaScript funktioniert, anstatt die Leute hier anzupöbeln dass du angeblich Ahnung hast.
                    "Im Grunde geht´s darum ob man die Ausführung JS iwie erzwingen bzw. vorverlegen kann" hat das egtl schon impliziert - aber ja, ist mir auch erst nach dem Posten gekommen : ) Das weitere lass ich mal dahingestellt..

                    Wenn ich das JS serverseitig (node.js) abarbeite müsste es aber eher während der run time hinkommen, oder?

                    Kommentar


                    • #11
                      Hallöchen,

                      Zitat von grotesk Beitrag anzeigen
                      echo "<script> blabla $daten..."; an eine JS Funktion ->


                      Das klingt mir schon ziemlich nach Murks. Wie wäre es mit einer sauberen Schnittstelle im Backend, welche lediglich die notwendigen Daten liefert. JavaScript kann sich diese Daten anschließend via AJAX vom Server holen. Alternativ, um sich den Request zu sparen, lässt sich das natürlich auch in einen eigenen Script-Block packen. Bspw. so:
                      PHP-Code:
                      // Controller
                      $values = [123, ..];
                      $this->view->render('data.js', [
                          
                      'values' => $values
                      ]); 
                      Code:
                      <script>
                          window.initialData = {
                              someValues: <?php json_encode($this->values); ?>
                          };
                      </script>
                      Darauf würde *ich* aber nur zurückgreifen, wenn die Ersparnis des einen Requests lebensnotwendig für die Performance der Anwendung ist.

                      Ansonsten muss ich ApoY2k insofern Recht geben, dass du keine Anforderungen an die Qualität der Antworten stellen darfst, wenn du nicht in der Lage bist, dein Problem auf einen nachvollziehbaren Test Case herunterzubrechen.

                      Edit
                      Zitat von grotesk Beitrag anzeigen
                      Wenn ich das JS serverseitig (node.js) abarbeite müsste es aber eher während der run time hinkommen, oder?
                      Auch serverseitiges JavaScript kann maximal Responses erzeugen, welche vom Client ausgewertet werden können. Die Reihenfolge der Ausführung ist in deinem Fall doch klar festgelegt, "eher während der run time" ist also purer Nonsens. Zuerst Server, dann Client. Punkt.

                      Viele Grüße,
                      lotti

                      Kommentar


                      • #12
                        Zitat von lottikarotti Beitrag anzeigen
                        Wie wäre es mit einer sauberen Schnittstelle im Backend, welche lediglich die notwendigen Daten liefert.
                        Es ist ja nicht so, dass ich lauter unnötige Daten mitgegeben hätte, aber mal schauen.. Wie es aktuell ausschaut muss ich sowieso was in die Richtung machen wenn ich die API nicht doppelt quälen wille, auch wenn dein Bsp. nichts zur Sache getan hat..
                        Zitat von lottikarotti Beitrag anzeigen
                        Ansonsten muss ich ApoY2k insofern Recht geben, dass du keine Anforderungen an die Qualität der Antworten stellen darfst, wenn du nicht in der Lage bist, dein Problem auf einen nachvollziehbaren Test Case herunterzubrechen.
                        Ansichtssache, es gibt Menschen die lesen Strukturen und filtern zwischen den Zeilen, es gibt welche die brauchen immer ein Beispiel.. Klar, ist in der IT etwas schwerer weil es einfach mehr Fehlerquellen gibt an die man oft nicht denkt. Aber wie du siehst hat es auch funktioniert. Und wenn du das jetzt bisschen durchdenkst wirst du sehen, dass mir aus meiner Sicht was unterstellt wurde obwohl schon alles notwendige da war.. Auch wenn du so wirkst als ob gerne weiter "diskutieren" würdest: danke für deinen Code-Auszug um deinen Standpunkt hier zu untermauern

                        Zitat von lottikarotti Beitrag anzeigen
                        Auch serverseitiges JavaScript kann maximal Responses erzeugen, welche vom Client ausgewertet werden können. Die Reihenfolge der Ausführung ist in deinem Fall doch klar festgelegt, "eher während der run time" ist also purer Nonsens. Zuerst Server, dann Client. Punkt.
                        Passt, danke.

                        Viele Bereiche sind kein 100%ig geschriebenes Gesetzt. Es gibt für so viele Bereiche Workarounds bzw. Möglichkeiten Punkte zu erzwingen die nicht vorgesehen waren.. Ich dachte mir, viell. gibts da ja auch eine "Murks" Lösung.

                        Kommentar


                        • #13
                          Hallöchen,

                          Zitat von grotesk Beitrag anzeigen
                          Ansichtssache
                          Nö. Forenregel.
                          Zitat von http://www.php.de/php-fortgeschrittene/announcements.html
                          Natürlich lieferst Du die nötigen Infos dazu:
                          - Die relevanten Teile Deines Scriptes, die Du bitte vom Original kopierst. Du willst ja nicht noch zusätzlich Abtippfehler reinmurksen.
                          Dazu noch etwas Sahne:
                          Zitat von http://www.php.de/php-fortgeschrittene/announcements.html
                          Formuliere Deine Frage so, dass der Leser kein Problem hat, Dein Problem zu erkennen. Hellseher gibt's nur im Kino.
                          ---

                          Zitat von grotesk Beitrag anzeigen
                          Es gibt Menschen die lesen Strukturen und filtern zwischen den Zeilen, es gibt welche die brauchen immer ein Beispiel.
                          Das ist keine valide Rechtfertigung für eine miserable Fehlerbeschreibung. Aber gut, es Menschen die sind nicht in der Lage ihre Probleme korrekt zu schildern und finden für alles eine bequeme Ausrede

                          Zitat von grotesk Beitrag anzeigen
                          Aber wie du siehst hat es auch funktioniert.
                          Jop, denn nachdem die in Post #8 aufgeführte Interpretation durch Post #10 verifiziert wurde, war endlich jedem klar, was *dein* Problem ist. Sehr gut.

                          Zitat von grotesk Beitrag anzeigen
                          Und wenn du das jetzt bisschen durchdenkst wirst du sehen, dass mir aus meiner Sicht was unterstellt wurde obwohl schon alles notwendige da war..
                          Auch wenn du so wirkst als ob gerne weiter "diskutieren" würdest: danke für deinen Code-Auszug um deinen Standpunkt hier zu untermauern
                          So ein Bullshit. Siehe oben.

                          PS: Und was Anfänger-Probleme mit "PHP-Fortgeschritten" zu tun haben, kann ich ebenfalls nicht nachvollziehen.

                          Ich bin mal raus hier.

                          Viele Grüße,
                          lotti

                          Kommentar


                          • #14
                            [MOD: Thread geschlossen]
                            --

                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                            --

                            Kommentar

                            Lädt...
                            X