Forum: PC-Programmierung Html Php und co.


von Jan L. (jan_l)


Lesenswert?

Hey

Also wie fang ich an...
Ich würde sagen mit dem Problem.

Ich bin immoment an einem privaten Projekt, in dem ich in der jetzigen 
phase einfach gerne 2 LEDs zum leuchten bringen will.

Das funktioniert auch alles ist auch schön und gut jetzt will ich das 
aber über einen Webserver steuern.

Heisst: ich drücke einen Button und eine led geht an. ich drücke einen 
anderen Button und es geht wieder aus.

Momentan mach ich das so:
1
<form action="zwei.php">
2
      <input type="submit">
3
</form>

und
1
 <?php2:
2
 function duddeldi() {
3
 shell_exec('gpio -g write 4 1');
4
 }
5
6
 ?>

naja is unglaublich hässlich aber es schaltet die LED ein...

So an sich programmier ich ja gerne aber mit dem ganzen Webentwicklungs 
kram konnte ich noch nie so viele anfangen.

Hat jemand ne Ahnung wie ich das vielleicht 1. schöner machen könnte und 
2. was viel wichtiger ist den "button klick" mit Übergabeparameter 
ausführen könnte?

das heißt zb das ich die LED blinken lasse und ich die Anzahl der 
Schleifendurchläufe mit nem Übergabeparameter bestimmen kann...


wenn ich das jetzt so lese ist alles ziemlich durcheinander...
aber vielleicht kann mir ja trotzdem jemand helfen.

von Peter II (Gast)


Lesenswert?

Jan L. schrieb:
> das heißt zb das ich die LED blinken lasse und ich die Anzahl der
> Schleifendurchläufe mit nem Übergabeparameter bestimmen kann...

sas wird schwer, PHP ist nicht dafür ausgelegt etwas auf "dauer" zu tun. 
PHP führt etwas aus und liefert dann etwas zurück. Wenn du jetzt ein 
blinkeen einbauen willst, dann würde das PHP blockieren und nicht mehr 
reagieren bzw nach einem Timeout wird es von Apache gekillt.

Du brauchst einen Programm was die eigentlichen aktionen ausführt, 
diesem Programm sagst du dann mit php was es machen sollt.

Das Programm läuft dann ständig und wartet auf befehle. Das Programm 
kann mit so ziemlich jeder Sprache geschrieben werden. Du musst dir nur 
etwas für die kommunikation einfallen lassen. Das einfachste ist z.b. 
eine Datei anzulegen wo der befehl drin steht (schön ist das aber nicht)

Ich selber würde es mit ASP machen, das hat den vorteil das man damit 
eine webappliation schreiben kann, dort kann man auch einfach einen 
Thread ausführen und die LED blinken lassen. Und auch gleichzeitig die 
Anfrage vom web beantworten kann. Es fällt also das 2. Programm weg und 
die Interprozess kommunikation.

von Lukas K. (carrotindustries)


Lesenswert?

Jan L. schrieb:
> Hat jemand ne Ahnung wie ich das vielleicht 1. schöner machen könnte und
> 2. was viel wichtiger ist den "button klick" mit Übergabeparameter
> ausführen könnte?
>
> das heißt zb das ich die LED blinken lasse und ich die Anzahl der
> Schleifendurchläufe mit nem Übergabeparameter bestimmen kann...
>
>
> wenn ich das jetzt so lese ist alles ziemlich durcheinander...
> aber vielleicht kann mir ja trotzdem jemand helfen.

Wenn du gerade erst mit Web-Entwicklung anfängst, lass PHP ganz schnell 
wieder sein und nimm' was zeitgemäßes wie python, node oder ruby mit dem 
entsprechenden framework drumherum.

Du definierst dir dann eine Funktion, die meintwegen bei aufruf von GET 
'/led' aufgerufen wird und via POST/GET ihre parameter bekommt. 
Aufgerufen wird der Kram dann mit XMLHttprequest.

von Jan L. (jan_l)


Lesenswert?

ok dann war das mit der schleife ein blödes bsp. also zum Schluss will 
ich gerne einen Cronjob erstellen heist ich geb einen Tag und zb eine 
Uhrzeit an und dann wird ein Script gestartet der für eine gewisse zeit 
laufen soll...


aber dieses ASP werd ich mir wohl mal ansehen.

@lukas: naja eigendlich will ich damit garnicht anfangen xD es is eher 
so das ich diese funktion gerne hätte und mich da jetzt einfach 
durchquäle

von Lukas K. (carrotindustries)


Lesenswert?

Jan L. schrieb:
> aber dieses ASP werd ich mir wohl mal ansehen.
Kannst du gerne machen, ich würde dir aber davon abraten, da du dich 
damit auf Windows festnagelst. Die von mir genannten Skriptsprachen 
laufen auf praktisch allem.

von Jan L. (jan_l)


Lesenswert?

oh python, heisst das ich kann einen python script auf meine Webseite 
einbinden =)?

von Peter II (Gast)


Lesenswert?

Lukas K. schrieb:
> Wenn du gerade erst mit Web-Entwicklung anfängst, lass PHP ganz schnell
> wieder sein und nimm' was zeitgemäßes wie python, node oder ruby mit dem
> entsprechenden framework drumherum.

was soll das heisen?

PHP ist zeitgemäß. Es kann sauber objektorientiert programmiert werden. 
bietet für web alles an was man braucht.

ob nun  python, node oder ruby  kann ich schlecht beurteilen, aber ruby 
fällt mir nur ständig mit ihren sicherheitslücken auf.

Kann man denn bei diesen Sprachen z.b. einen Thread ständig auf dem 
Server laufen lassen? Oder laufen sie nicht auch nur als CGI im apache?

von Peter II (Gast)


Lesenswert?

Lukas K. schrieb:
> Jan L. schrieb:
>
>> aber dieses ASP werd ich mir wohl mal ansehen.
> Kannst du gerne machen, ich würde dir aber davon abraten, da du dich
> damit auf Windows festnagelst. Die von mir genannten Skriptsprachen
> laufen auf praktisch allem.

dann muss ich was falsch gemacht haben, mein Programm läuft auf linux 
ohne Probleme.

von Lukas K. (carrotindustries)


Lesenswert?

Peter II schrieb:
> Kann man denn bei diesen Sprachen z.b. einen Thread ständig auf dem
> Server laufen lassen? Oder laufen sie nicht auch nur als CGI im apache?

Ersteres ist sogar das üblichere.

Was PHP anbetrifft: 
http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/

Jan L. schrieb:
> oh python, heisst das ich kann einen python script auf meine Webseite
> einbinden =)?
Das ist nur bei PHP der Fall.
Deine python-Anwendung läuft eigenständig, zufällig lauscht sie aber auf 
einem TCP-Port auf eingehende HTTP-Anfragen und führt deinen code aus. 
So mal als Beispiel: http://flask.pocoo.org/docs/quickstart/

Peter II schrieb:
> dann muss ich was falsch gemacht haben, mein Programm läuft auf linux
> ohne Probleme.
Wir reden hier von den active server pages von Microsoft?
Tatsächlich scheint wohl jemand ein Apache-Modul dafür geschrieben zu 
haben, dennoch würde ich auf verbreitetes und offenes wie python, ruby 
oder node setzen.

von Peter II (Gast)


Lesenswert?

Lukas K. schrieb:
>> dann muss ich was falsch gemacht haben, mein Programm läuft auf linux
>> ohne Probleme.

> Wir reden hier von den active server pages von Microsoft?
ja. Aber "active server pages" trifft es nicht mehr wirklich. Eine 
Webapplication kann viel mehr weil sie ständig läuft und die einzlenen 
Request als Threads reinkommen.

"active server pages" ist nur die einfache Version die wie PHP arbeitet, 
jeder anfrage startet einen process und beendet ihn wieder. Es läuft 
also nie eine Wirkliche anwendung.

> Tatsächlich scheint wohl jemand ein Apache-Modul dafür geschrieben zu
> haben
mono bringt einen eigenen Webserver mit, apache braucht man dafür nicht.

> dennoch würde ich auf verbreitetes und offenes wie python, ruby
> oder node setzen.
ich mag keine Scriptsprachen, ich habe gerne einen compiler der mir 
fehler nicht erst zur laufzeit zeigt.
Außerdem finde ich C# recht gut, für web und native anwendung.

von Lukas K. (carrotindustries)


Lesenswert?

Peter II schrieb:
> mono bringt einen eigenen Webserver mit, apache braucht man dafür nicht.

Dann sind wir bei ASP.net ;)

von adsf (Gast)


Lesenswert?

Peter II schrieb:
> was soll das heisen?
>
> PHP ist zeitgemäß. Es kann sauber objektorientiert programmiert werden.
> bietet für web alles an was man braucht.
a bit of light reading... 
http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/
Klar, es geht. Nur was angenehmer ist? Spannende Frage, für mich 
definitiv nicht PHP, ich will ne moderne Hochsprache. Und wenn man es eh 
neu lernt sollte man sich schon über die Alternativen informieren.

> ob nun  python, node oder ruby  kann ich schlecht beurteilen, aber ruby
> fällt mir nur ständig mit ihren sicherheitslücken auf.
das Problem dabei ist in erster Linie Ruby on Rails. Ist zwar DAS große 
Webframework für Ruby, das man für das was der TO vorhat aber eher nicht 
verwenden würde, weil einfach unnötig fett. Ansonsten, PHP und 
lückenfrei ;)?
Python hat man richtig viel Auswahl was Frameworks angeht, von total 
simpel zu superkomplex. Kann man Tage-Wochen damit zubringen sich für 
das zu entscheiden das einem am besten gefällt.
Node.js ist am jüngsten, aber irrsinnig was da in kurzer Zeit entstanden 
ist.

> Kann man denn bei diesen Sprachen z.b. einen Thread ständig auf dem
> Server laufen lassen? Oder laufen sie nicht auch nur als CGI im apache?
CGI geht wohl mit jeder Sprache, alle 3 können auch Standalone-Betrieb.

von adsf (Gast)


Lesenswert?

Ach und ansonsten: Für den Hobbybetrieb, im Zweifel auch noch im 
internen Netz, ist wirklich das einzig relevante Argument was einem 
gefällt. Und irgendwelche Frameworks sind im Zweifel überflüssig, egal 
in welcher Sprache. Man kann webanwendungen auch in C oder Brainf*ck 
schreiben, wenn man mag und man den Aufwand nicht finanziell 
rechtfertigen muss ;)

von Charlie (Gast)


Lesenswert?

adsf schrieb:
> Python hat man richtig viel Auswahl was Frameworks angeht

Ruby auch. Ich mag Sinatra. Es gibt aber Unmengen Webframeworks in Ruby. 
Die Ruby-Welt hat auch Rack hervorgebracht, was Python dann zu recht als 
WSGI abgekupfert hat.

von adsf (Gast)


Lesenswert?

Charlie schrieb:
> adsf schrieb:
>> Python hat man richtig viel Auswahl was Frameworks angeht
>
> Ruby auch. Ich mag Sinatra. Es gibt aber Unmengen Webframeworks in Ruby.
> Die Ruby-Welt hat auch Rack hervorgebracht, was Python dann zu recht als
> WSGI abgekupfert hat.

Naja, Ruby hat schon weniger Auswahl, aber das ist nicht negativ 
gemeint: Python hat tendenziell unnötig viele. In Ruby sind es doch 
wenige, weitverbreitete, die aber auch alle Anforderungen abdecken.
Oh, und: WSGI ist älter als Rack, also eher andersrum ;)

von Frank (Gast)


Lesenswert?

Sowas macht man mit Javascript ...

- bei einem Button kannst du im Event "onclick" eine Funktion aufrufen
- mit dieser Funktion machst du Folgendes:

1. ein oder mehrere "hidden"-Textfelder mit Parametern belegen
2. Cookie mit aktuellen Statusinfos setzen
3. das Formular "submitten" und neu laden
4. Cookie lesen, Farben oder Texte entsprechend anpassen ("LED an" oder 
so)

von Peter II (Gast)


Lesenswert?

Frank schrieb:
> Sowas macht man mit Javascript ...

klar doch, und wie bringt man den Server dazu etwas blinken zu lassen?

Auch javascript braucht einen Server und um diesen geht es hier.

von Frank (Gast)


Lesenswert?

> Hat jemand ne Ahnung wie ich das vielleicht 1. schöner machen könnte und
> 2. was viel wichtiger ist den "button klick" mit Übergabeparameter
> ausführen könnte?

>klar doch, und wie bringt man den Server dazu etwas blinken zu lassen?
>Auch javascript braucht einen Server und um diesen geht es hier.

Sicher? Wie Obiges Zitat zeigt, sollte es um "schöner machen" gehen. PHP 
funktioniert doch, und sehen tut das eh' niemand, also was solls? Mein 
Tip bezog sich darauf, in der Bedienoberfläche mehr 
Gestaltungsmöglichkeiten tu haben ...

von adsf (Gast)


Lesenswert?

Und nachdem ich zum Ablenken vom eigentlichen Thema beigetragen habe, 
hier noch ein Link, der zumindest erstmal nützlich sein könnte:
http://stackoverflow.com/questions/1019867/is-there-a-way-to-use-shell-exec-without-waiting-for-the-command-to-complete

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Peter II schrieb:
> klar doch, und wie bringt man den Server dazu etwas blinken zu lassen?

Die Funktion LED an/aus hat er doch schon, es muss nur regelmäßig 
geschehen.

Ansonsten: Wenn du einen Cronjob "anlegen" willst, dann tu das doch ;-) 
Je nach favorisierten Sprachen kannst du auch einfach einen Jetty (Java) 
oder ein lighttp(C) Plugin schreiben, welches die Aufgabe übernimmt. CGI 
mit Apache wäre auch noch drin...

Außerdem könntest du dir auch überlegenen einen separaten Prozess zu 
schreiben, welcher nur eine Konfigdatei liest. Diese kannst du dann 
bequem über eine Website editieren.

von Jan L. (jan_l)


Lesenswert?

hmm sieht so aus als muss ich mich damit wohl doch ein bisschen mehr 
befassen müssen xD

werd heut nach der Arbeit mal in ein paar Sprachen rein schnüffeln um zu 
sehen welche mir am ehesten zusagt :P

von Jan L. (jan_l)


Lesenswert?

also ich hab mich jetzt mal bisschen umgeschaut, und bin erstmal bei 
asp.net hängengeblieben.

damit hab ich zumindest schon mal nen button mit übergabeparameter 
hinbekommen.

Jetzt ist nur die Frage, da google sich ein bisschen weigert mir zu 
helfen, ob ich damit auch shell kommandos an meinen server schicken 
kann?

von Peter II (Gast)


Lesenswert?

Jan L. schrieb:
> Jetzt ist nur die Frage, da google sich ein bisschen weigert mir zu
> helfen, ob ich damit auch shell kommandos an meinen server schicken
> kann?

nach was hast du denn gesucht?

http://msdn.microsoft.com/de-de/library/system.diagnostics.process.start%28v=vs.80%29.aspx

von Jan L. (jan_l)


Angehängte Dateien:

Lesenswert?

Also im Anhang hab ich mal kurz aufgemalt was ich such...

von Peter II (Gast)


Lesenswert?

Jan L. schrieb:
> Also im Anhang hab ich mal kurz aufgemalt was ich such...

wenn du es wirklihc mit asp.net machen willst, dann brauchst du etwas 
länger. Dafür musst du erstmal mit ein paar Grundlangen beschäftigen.

Du brauchst halt eine Web Application, diese steuert dann die IO-Ports. 
Die Request vom Web reden dann mit dieser Application.

http://msdn.microsoft.com/en-us/library/ms178594%28v=vs.100%29.aspx

von Peter II (Gast)


Lesenswert?

du braucht eine Klasse die von

System.Web.HttpApplication abgeleitet ist. In dieser musst du die IOs 
ansteuern.

http://msdn.microsoft.com/en-us/library/system.web.httpapplication%28v=vs.100%29.aspx

von Jan L. (jan_l)


Lesenswert?

hmm jetzt mal ne ganz blöde Frage... funktioniert asp.net auch auf Linux 
Servern?

von Peter II (Gast)


Lesenswert?

Jan L. schrieb:
> hmm jetzt mal ne ganz blöde Frage... funktioniert asp.net auch auf Linux
> Servern?

ja mit mono ( also vermutlich nicht zu 100%, aber für mich bis jetzt 
ausreichend)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.