PHP Dynamische Inhalte | NodeJS + PHP?

ClocxHD

Lt. Junior Grade
Registriert
Aug. 2014
Beiträge
376
Hallo,

ich habe eine Website mit dem PHP-Framework Silex (basiert auf Symfony) erstellt.

Jedoch möchte ich einige Inhalte dynamisch ausgeben, das heißt, dass wenn ein neuer Eintrag in der Datenbank hinzugefügt wird, dieser direkt ohne neu laden auf der Seite erscheint.

Wie lässt sich sowas am besten realisieren?

Ist es möglich bzw. sinvoll, NodeJS in PHP zu integrieren?

LG,
ClocxHD
 
NodeJS ist Server-Side, was du brauchst ist aber Client-Side.
Schau dir doch mal das JavaScript Framework AngularJS an, das macht genau das was du willst.
 
Hi,

würde ich auch sagen: vernünftiges JavaScript Framework, per AJAX die Inhalte nachladen, fertig.

VG,
Mad
 
Oder wenn Polling nicht gewünscht ist, auf Websockets setzen.
 
Und wie würde ich das mit AngularJS machen?
Das, was ich bis jetzt gefunden habe, wäre, dass der Aufruf alle x Sekunden gestartet wird.
 
du kannst in php ratchet (http://socketo.me/) nutzen und im frontend websockets.. angular würde ich nicht anfassen außer natürlich dein ganze frontend ist schon fertig und komplett in angular geschrieben
 
AngularJS macht das out of the box. Bloß nicht mit $timeout arbeiten bei sowas. Du brauchst da garnix machen, außer deinen Code richtig schreiben. Angular überwacht z.B. Änderungen an einem Array und pushed diese dann an den "Browser". Somit wird bei Änderung des Arrays in Angular auch deine Webseite aktualisiert.
http://courseware.codeschool.com/shaping-up-with-angular-js/Slides/level01-05.pdf
ab Seite 80 sollte es interessant für dich werden. Wobei auch die anderen Seite für das grundlegende Verständnis von Angular nicht verkehrt sind ;)
 
Hi,

wie genau macht AngularJS das "out of the box"? Kannst du das mal kurz umreissen? Wundert mich dann doch sehr stark, wie das ein Frontend Javascript Framework ohne zusätzliche Dinge wie Sockets oder Polling machen soll.

VG,
Mad
 
Wie angular das macht, würde mich auch interessieren.
Mein Controller:
Code:
var test = angular.module('test', []);

test.controller('CountController', function ($scope, $http) {
    $http.get("https://url/backend/count").success(function (response) {
       $scope.count = response;
    });
});
 
AngularJs hat keinerlei Live-Funktionalität, immerwieder interessant wie bei JavaScript-Frameworks alles missverstanden wird. AngularJs hat eine "reaktive" Programmierung, was bedeutet, dass bei Änderung des Models das HTML neu gerendert wird, wer alt genug ist wird das noch dem MVC-Begriff zuordnen können.

Damit ClockxHD live irgendetwas darstellen kann, muss er also das AngularJs DataModel manuell aktualiseren, da gibt es dann aber hunderte Frameworks die das können. Er kann dafür zu Polling, SSE, Websockets oder whatever greifen, aber er MUSS den Live-Part selbst implementieren. Oftmals wird aus Faulheit, da pusherapp.com verwendet, für das Pusher-Protocoll gibt es auch viele OpenSource Implementierungen.
 
Hi,

danke ice-breaker, genauso kenne ich nämlich angular auch (oder jedes andere Frontend Framework). Mit dem Backend findet dabei keine Kommunikation statt, wenn nicht explizit auf irgendeine Verbindung (Polling oder Websocket etc) zurückgegriffen wird.

VG,
Mad
 
Zurück
Oben