• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

PHP GitHub (geändert)

nietaL

NGBler

Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
Hey Leute,

ich habe ein PHP-Skript, das eine Batch-Datei ausführt (exec). Die Batch löscht und erstellt Ordner und läd Inhalte aus dem internet und füttert die Ordner.
Das PHP-Skript darf erst weiterarbeiten, wenn die Batch fertig ist. Dazu wollte ich im PHP-Skript prüfen, ob ein bestimmter Ordner bereits erstellt ist, denn wenn das der Fall sein sollte, weiß ich, dass die Batch durchgelaufen ist.

Wenig überraschend geht es nicht, weil ja das Skript serverseitig interpretiert wird und sicher nicht mehr mittendrin auf Veränderungen im Hintergrund reagieren kann.

Pseudocode:
[src=php]exec('makedir.bat');
$dir_exists = false;
while ($dir_exists == false)
{
if(is_dir('dir1')== true) {$dir_exists = true;}
}[/src]

Warum ist das Blödsinn, was ich mir da gedacht habe? UND Gibt es eine moderate Möglichkeit, das so oder so ähnlich durchzuführen?

Danke :-)
 

alter_Bekannter

N.A.C.J.A.C.

Registriert
14 Juli 2013
Beiträge
4.823
Ort
Midgard
Re: PHP prüft Batch-Prozess-Status

Warum überhaupt die Batch?

Ordner erstellen und löschen kannst du auch gleich in PHP.
 

nietaL

NGBler

Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
  • Thread Starter Thread Starter
  • #3
Re: PHP prüft Batch-Prozess-Status

Jedes Mal denke ich: Ach passt schon, wenn ich die Hälfte der Information einfach weglasse. :D

Es geht um das Downloaden eine Repositorys von Github. Und dafür hatte ich mir eine Bat geschrieben.
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.560
Re: PHP prüft Batch-Prozess-Status

@nietaL:

Eventuell wäre es ratsam unter PHP libCurl zu verwenden um die Inhalte zu downloaden von Github: http://php.net/manual/de/book.curl.php
So fern verfügbar. Generell sollte diese Lib aber zu Verfügung stehen. Ich vermute es ist Standard.

Dann kannst du die Github Quelle per libCurl downloaden (https) und nach dem Download das Bootstrapping ausführen (Ordner befüllen mit den entsprechenden Daten).

Eine "idle" Loop zu schreiben, die auf einen Filedeskriptor wartet/reagiert, verursacht nur unnötige Last. Selbst eine leere Schleife iteriert und wird "aktiv" ausgeführt.
 

nietaL

NGBler

Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
  • Thread Starter Thread Starter
  • #6
Re: PHP prüft Batch-Prozess-Status

Eine "idle" Loop zu schreiben, die auf einen Filedeskriptor wartet/reagiert, verursacht nur unnötige Last. Selbst eine leere Schleife iteriert und wird "aktiv" ausgeführt.

Ja, das sehe ich mittlerweile auch so. Das ganze über PHP zu regeln, finde ich auch deutlich besser. Ich habe mich einmal etwas umgesehen und diesen Code-Schnipsel entdeckt. Hier heißt es:



If allow_url_fopen is set to On in the php.ini you can simply use file_get_contents(). No curl is required in this case. I successfully downloaded a master.zip of one of my repositories using:
[src=php]file_put_contents("master.zip",
file_get_contents("https://github.com/metashock/Hexdump/archive/master.zip")
);[/src]

Wenn ich die angegebene URL in den Browser kopiere, kommt sofort die Download-Prompt. Wenn ich dieses Skript genau so ausführe, wird aber lediglich eine master.zip angelegt, die mit 0 byte leer ist. allow_url_fopen ist auf on gesetzt. Kann sich jemand erklären, warum der Schnipsel nicht funktioniert. Er ist so schön einfach.
 

darksider3

NGBler

Registriert
18 Sep. 2013
Beiträge
393
Ort
/dev/sda
Re: PHP prüft Batch-Prozess-Status

@nietaL:
Wenn ich die angegebene URL in den Browser kopiere, kommt sofort die Download-Prompt. Wenn ich dieses Skript genau so ausführe, wird aber lediglich eine master.zip angelegt, die mit 0 byte leer ist. allow_url_fopen ist auf on gesetzt. Kann sich jemand erklären, warum der Schnipsel nicht funktioniert. Er ist so schön einfach.

Fehler? irgendwas? Was sagt die error_log? Denn der Snippet funktioniert, zumindest bei mir(PHP 7.0):
Code:
ls -l master.zip
-rw-rw-rw- 1 xxx xxx 16731 Oct 17 22:13 master.zip
 
Zuletzt bearbeitet:

nietaL

NGBler

Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
  • Thread Starter Thread Starter
  • #8
Re: PHP prüft Batch-Prozess-Status

Mhh, es geht bei dir? Dann muss es an meiner Einrichtung liegen... :confused: Trotzdem ist das eine gute Nachricht.

In der Error-Log habe ich das hier gefunden:

[18-Oct-2018 15:09:40 UTC] PHP Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version in C:\Inetpub\vhosts\bla.de\httpdocs\webgui\test.php on line 3
[18-Oct-2018 15:09:40 UTC] PHP Warning: file_get_contents(): Failed to enable crypto in C:\Inetpub\vhosts\bla.de\httpdocs\webgui\test.php on line 3
[18-Oct-2018 15:09:40 UTC] PHP Warning: file_get_contents(https://github.com/metashock/Hexdump/archive/master.zip): failed to open stream: operation failed in C:\Inetpub\vhosts\bla.de\httpdocs\webgui\test.php on line 3

Scheint irgendetwas mit SSL zu tun zu haben. :unknown: Die test.php besteht lediglich aus den 3 o.g. Zeilen Code.

...

Das war's. Danke.
 
Zuletzt bearbeitet:

darksider3

NGBler

Registriert
18 Sep. 2013
Beiträge
393
Ort
/dev/sda
error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version in C:\Inetpub\vhosts\bla.de\httpdocs\webgui\test.php on line 3
Sitzt Du hinter einem Proxy? Irgendein custom Cert-Bundle am Host? Sieht so aus, als könnte da ein anderes Bundle helfen. Lad Dir mal von cURLs Website das Bundle von denen herunter, verschieb das bei Dir ins Verzeichnis zum Script und füge folgendes an den Anfang des Skripts hinzu:

[src=php]$contextOptions = [
'ssl' => [
'verify_peer' => true,
'cafile' => '/pfad/cafile.pem',
'CN_match' => 'github.com',
'ciphers' => 'HIGH:!SSLv2:!SSLv3',
'disable_compression' => true,
],
];
$context = stream_context_create($contextOptions);
[/src]
(ändere bitte vorher auch den Pfad von cafile ab)
Im Prinzip teilst Du file_get_contents mit dem context mit, das Du SSLv2 und SSLv3 verbietest und damit nur TLS erlaubst, und mit verify_peer validierst Du den Server mit dem Du sprichst. Außerdem umgeht man mit der Option disable_compression die CRIME-Attack auf TLS.


und daher füge folgendes in file_get_contents an/ändere sie um, um die Stream-Optionen mitzunehmen, die Du gerade gesetzt hast:
[src=php] file_put_contents("master.zip",
file_get_contents("https://github.com/metashock/Hexdump/archive/master.zip", false, $context)
);
[/src]

---

Das war's. Danke.
Mit welcher Version hast Du denn da hantiert?^^
 

nietaL

NGBler

Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
  • Thread Starter Thread Starter
  • #10
Dass ich hinter nem Proxy sitze, wüsste ich nicht. Ist ein vServer von Strato. Aber vielleicht siehh es deshalb so aus?

Deine Ratschläge setze ich gleich um.
Die Standardversion auf dem Server von PHP ist 5.5. Mit zwei klicks auf 7.1 geändert.

Danke an alle!
 
Oben