• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Wie realisiere ich meine Geschäftsidee?

skizZ schrieb:
Wegen der geplanten Chattechniken oder der hohen Zugriffszahlen?
Ab wann würde deiner Meinung nach PHP keinen Sinn machen? Ich arbeite im Moment selbst an einem kleinen Projekt und rechne mit etwa 100 Benutzern. Dies ist natürlich nicht viel, diese werden allerdings viel damit arbeiten. Sollte ich hierbei auch auf etwas anderes setzen?

Das „Kerngebiet“ von PHP ist es, HTTP-Anfragen zu beantworten, also Webseiten (HTML-Code) zu generieren. Dabei läuft ein Skript selten länger als ein paar Sekunden. Beim nächsten Request wird es völlig neu gestartet.

Für Anwendungen mit längerer Laufzeit (Stunden, Tage), also Dienste, eignet sich PHP vor allem deshalb schlecht, weil es dafür nicht konzipiert wurde. Es unterstützt beispielsweise kein Threading. Zudem wird oft behauptet, PHP würde mit zunehmender Ausführungszeit Speicher leaken (Speicherleck). Ob da was dran ist, weiß ich nicht. Das sind jedenfalls beides Punkte, die bei Laufzeiten von Sekunden nebensächlich sind.

Andererseits können Dienste in PHP programmiert werden. Beispielsweise frameone schildert hier seine Erfahrungen:

- Keystroke - PHP Forum: phpforum.de

(Anmerkung dazu: Was ich über Sockets und Java-Applets schreibe, ist mittlerweile überholt. Im Rahmen von HTML5 haben viele Browser bereits eine native Unterstützung von Sockets (WebSocket) eingebaut. Falls das nicht der Fall ist, nutzt man wohl als Fallback eine kleine Flash-Komponente.)

@skizZ: Ich habe zu wenig Erfahrung mit PHP-Programmen als Diensten, um dir eine Empfehlung zu geben. Aber die Tendenz dürfte klar sein: PHP kann sowas generell irgendwie auch, andere Sprachen können es besser.

Warum ein Dienst statt zahlreichen Einzelaufrufen eines Skripts?

Weil wir Sockets wollen.

Der Unterschied zwischen Sockets und normalen HTTP-Requests ist gewaltig. Nehmen wir beispielsweise ein Online-Brettspiel, in dem im Browser zwei Spieler gegeneinander antreten können. Das Spiel soll mit HTML/JS und einer serverseitigen Komponente zur Datenhaltung programmiert sein (also kein Flash, kein Java-Applet, …). Das Problem ist, den jeweiligen Spielern mitzuteilen, dass der jeweils andere Spieler einen Zug ausgeführt hat. Ohne Sockets geht das nur mit Ajax, also durch wiederholte HTTP-Anfragen an den Server: „Ist was Neues für mich da?“ Die Antwort darauf dürfte meist „Nein.“ lauten, und der Request verbraucht nur unnötig Bandbreite. Außerdem besteht eine gewisse Wartezeit, da praktischerweise nur alle meinetwegen 10 Sekunden ein Request abgesetzt wird. Das heißt, im Schnitt bekommt ein Spieler erst nach 5 Sekunden (+ Requestdauer, + Initialisierungs-/Ausführungszeit des serverseitigen Skripts) mit, dass der Gegner gezogen hat.

Bei einer Socketverbindung kann der Server selbsttätig Daten an die Clients (also die Spieler) senden. Da fallen die „Hast du was für mich?“-Anfragen und der gesamte HTTP-Overhead weg (das ist bei sowas ein signifikanter Anteil, ich sage mal 95 % oder mehr). Außerdem geschieht die Aktualisierung praktisch in Echtzeit. Prinzipiell hast du dann sowas wie einen „Ping“ wie bei einem Online-Spiel oder so.

(Recyclet aus dem Thread http://www.html.de/html-und-xhtml/40690-html5-websockets-2.html#post294413.)

server_attention_span.png


(xkcd)

Was bei simpler Textübertragung noch per HTTP zu stemmen ist, wird spätestens bei Bildübertragung einfach unsinnig bis unmöglich. Da möchte man eine Verbindung, die nicht zustandslos und die vor allem beidseitig ist (Socket (Software)).
 
threadi schrieb:
MikeTheBike schrieb:
Heisst das, die Big Player nutzen alle kein PHP (bzw. konvertieren es, wie das erwähnte Beispiel Facebook)?
Genau. Sie nutzen kein PHP. Nicht mal MySQL als Datenbanksystem. Facebook konvertiert auch nichts.

„HipHop was created by Facebook to save resources on its servers.“

- HipHop for PHP - Wikipedia, the free encyclopedia

MikeTheBike schrieb:
Ich hab mal bei 1&1 gefragt, die haben gesagt, bei denen geht auch Java (auch wenn's auf ihrer Website nicht erwähnt ist). Kann es sein, dass bei manchen Hosting-Anbietern Java nicht geht? Was brauchen die dafür?

Zumal es glaube ich häufig in den AGB steht, dass der Betrieb eines Chats oder ähnlichem bei normalen Hosting-Angeboten untersagt ist. Auch Java-fähige Webspace-Lösungen werden da nur für einen Testlauf reichen, allein schon wegen den Anbindung und der zur Verfügung stehenden Serverleistung.

"Java ist immer eine clientseitige Anwendung […]."

Ja, da kannst du aufhören zu lesen. Die meinen Java-Applets. Applets haben nichts mit dem Hosting-Anbieter oder der Serverseite zu tun. Das ist eine Fähigkeit des Browsers. Du könntest auch sagen „Bei uns gehen Bilder.“ oder „Bei uns geht JavaScript.“.

Was du brauchst, ist vermutlich zuerst mal eine auf dem Server installierte JRE-Distribution.

Und so ein Chat hat deshalb viel an Laufzeit, weil ständig etwas hin- und hergeschickt wird?

Socket-Verbindungen müssen aufrecht erhalten werden. Ein PHP-Skript wird beispielsweise in aller Regel für jeden HTTP-Request neu gestartet, erzeugt eine Ausgabe und ist dann beendet.

Wird denn bei einem Chat wie Chatroulette jeder Chatbeitrag über den Server geschickt? Oder kann man das auch so programmieren, dass es von Client zu Client direkt geschieht?

Die nutzen offenbar Peer-to-Peer.

- Chatroulette - Wikipedia, the free encyclopedia

Das bedeutet im Prinzip, dass ein Client gleichzeitig auch Serveraufgaben übernehmen muss.

Das ist zugegebenermaßen eine Option, über die man mal verschärft nachdenken sollte.

Da könnte sich allerdings als Problem herausstellen, dass eine normale Heimverbindung nicht den Upload hat, um Video in Echtzeit an mehrere weitere Clients zu streamen. Aber dazu kann ich konkret spontan nicht viel sagen.

In einem Gruppenchat müssen die Inhalte an jeden Teilnehmer geschickt werden. Das Problem hat Chatroulette nicht.

Soweit ich weiss, ist Chatroulette mit Flash realisiert. Ich nehme mal an, dass Flash, das ja früher v.a. für Videos / Animationen genutzt wurde, auch nicht gerade das effizienteste Werkzeug für einen Chat ist.

Na ja, Flash ist heutzutage schon mehr als Animation (zum Beispiel Adobe Flex).

Edit:

Wobei sich bei Peer-to-Peer-Verbindungen zwangsläufig die Frage ergibt, was deine Anwendung für einen Mehrwert bietet, den nicht zum Beispiel Skype ebenfalls bieten würde. Videotelefonie-Lösungen existieren ja seit langem.

Der Vergleich mit Skype kann allerdings ein Indikator dafür sein, als wie aufwändig sich das Projekt gestalten könnte. Ich denke, wir sind uns alle einig, dass in Skype Millioneninvestitionen stecken, auch wenn sich die Grundfunktionalität in wenigen einfachen Sätzen beschreiben lässt.
 
Zuletzt bearbeitet:
Java ist immer eine clientseitige Anwendung
Sorry, aber das ist reiner Unsinn. Mit Java kann man ebenso wie mit jeder anderen Programmiersprache Server-Applikationen erstellen, und gerade bei Application Servern wie IBM Websphere werden oft Java-Klassen eingebunden, die natürlich serverseitig laufen. Manche Datenbanken wie Oracle haben sogar eine Java-VM, die im Datenbank-Context läuft und extrem performante Java-basierende Web-Anwendungen erlaubt, die große Interaktionen mit den in der DB gespeicherten Daten erlauben.
 
Irgend wie entfernen wir uns vom Thementitel.
Was du brauchst um deine Geschäftsidde zu verwirklichen ist ein Konzept, die dazu passende Technik und los geht's.

Ja, klingt sehr einfach, ist es dann aber nicht, das weiss ich auch. Aber eine fertige Lösung wirst du hier sowieso nicht finden.
 
Also, ich nehme mal als Fazit, dass ich noch viel lernen muss, bis ich so was selber realisieren kann. Ein paar Fragen sind aber für mich noch offen geblieben:
- In welcher Sprache würdet Ihr das schreiben, wenn PHP nicht das Mittel der Wahl ist? (Anders gefragt: Wie sähe EUER Konzept aus, wenn Ihr Chatroulette nachmachen wolltet?)

- Wenn ich irgendein Internet-Projekt mit Java (serverseitig) realisieren will (z.B. mit Googles Web Toolkit), werd ich dann immer das Problem haben, dass die Standard-Hoster das gar nicht unterstützen?

- Wie kann es sein, dass Skype Millioneninvestitionen brauchte, wogegen Chatroulette von diesem jungen Russen geschrieben wurde - obwohl beide im Wesentlichen dasselbe bieten, nämlich Videochat? (Beim einen per Zufallsprinzip, beim anderen per Anmeldename. Okay, ich geb zu, dass das ein Unterschied ist, aber kein wahnsinnig großer.)
 
- In welcher Sprache würdet Ihr das schreiben, wenn PHP nicht das Mittel der Wahl ist? (Anders gefragt: Wie sähe EUER Konzept aus, wenn Ihr Chatroulette nachmachen wolltet?)

Eine Mischung aus vielen Sprachen. Zu denen zählt nicht nur Java und PHP.

- Wenn ich irgendein Internet-Projekt mit Java (serverseitig) realisieren will (z.B. mit Googles Web Toolkit), werd ich dann immer das Problem haben, dass die Standard-Hoster das gar nicht unterstützen?

Abgesehen davon, dass ich weggehen würde vom Begriff "Standard-Hoster", denn die gibt es nicht - ja, wirst Du haben.

- Wie kann es sein, dass Skype Millioneninvestitionen brauchte, wogegen Chatroulette von diesem jungen Russen geschrieben wurde - obwohl beide im Wesentlichen dasselbe bieten, nämlich Videochat? (Beim einen per Zufallsprinzip, beim anderen per Anmeldename. Okay, ich geb zu, dass das ein Unterschied ist, aber kein wahnsinnig großer.)

Skype ist eine Desktop-Applikation und mit einer Webseite kaum zu vergleichen.
 
- In welcher Sprache würdet Ihr das schreiben, wenn PHP nicht das Mittel der Wahl ist? (Anders gefragt: Wie sähe EUER Konzept aus, wenn Ihr Chatroulette nachmachen wolltet?)

Es kommt vor allem auf die Techniken an, die in der Sprache nutzbar sind. PHP hat dort den Nachteil, keine Threads zu unterstützen. Das heißt grob: Verschiedene Aufgaben können nicht (zumindest nicht so einfach wie in Sprachen mit Threads) parallel abgearbeitet werden. Aufgaben, die eine lange Zeit brauchen, blockieren die gesamte Restanwendung. Das ist bei einem Serverdienst natürlich nicht so praktisch.

Wenn du nur Peer-to-Peer-Verbindungen hast, brauchst du vermutlich nicht mal mehr einen Serverdienst. Da würde es dann auch ein normales kleines PHP-Script tun. Da ginge es dann ja nicht mehr darum, den Traffic über den Server laufen zu lassen, sondern lediglich einem Client die Kontaktinformationen eines anderen Clients zu liefern, mit dem sich dieser dann verbinden kann.

Vielleicht wäre eine Suche nach „chatroulette clone“ für dich interessant.

- Wie kann es sein, dass Skype Millioneninvestitionen brauchte, wogegen Chatroulette von diesem jungen Russen geschrieben wurde - obwohl beide im Wesentlichen dasselbe bieten, nämlich Videochat? (Beim einen per Zufallsprinzip, beim anderen per Anmeldename. Okay, ich geb zu, dass das ein Unterschied ist, aber kein wahnsinnig großer.)

Das war von mir als Beispiel dafür gemeint, dass manche Dinge einfach wirken, es aber nicht unbedingt sind. Das hängt eben von den genauen Anforderungen ab.

Bei Chatroulette war es wohl so, dass Flash die meisten Technologien bereits eingebaut hatte (Ansteuerung der Webcam, Peer-to-Peer-Verbindungen, …). Dennoch musste er sich wohl 10.000 $ leihen (keine Ahnung, was man dafür in Russland so alles kriegt) und mittlerweile arbeiten fünf Programmierer dran (alles irgendwo im Web gelesen, hauptsächlich Wikipedia).

Wenn du nach dem Begriff von oben suchst, findest du mittlerweile Chatroulette-Alternativen für 100 $. Wie die skalieren, ob die deinen Anforderungen entsprechen, ob überhaupt Peer-to-Peer für dich ausreicht – keine Ahnung.
 
Ich störe mich noch ein wenig an der Aussage, dass PHP nicht das Wahre ist, PHP ist in mancherlei Hinsicht eine tolle Lösung. Eine Sprache als eierlegende Wollmilchsau zu suchen führt immer ins Nirvana. Jede Sprache für sich alleine ist nie das Wahre.

Was es gibt sind Anforderungen und Sprachen, die diese Anforderungen erfüllen. PHP its also nur ein Mittel zum Zweck, was für alle anderen Sprchen auch gillt. Du wirst eine simple HTML-Datei wohl eher nicht in C schreiben oder ein Script, dass in Echtzeit laufen muss nicht in Basic.
 
Zurück
Oben