PHP & Asynchrone Funktionen Hilfe

11/13/2020 12:09 Cc_Cc_Cc#1
Guten Tag,

ich prüfe Seiten ob du in einer Spam-Liste sind. Ich habe jetzt beispielsweise 10 Spam-Listen und für jede Liste muss eine Funktion abgefragt werden (checkdnsrr).

Bsp:

Code:
[PHP]
		$hostnames = [
			"dnsbl-1.uceprotect.net",
			"dnsbl-2.uceprotect.net",
			"dnsbl-3.uceprotect.net",
			"dnsbl.dronebl.org",
			"dnsbl.sorbs.net",
			"zen.spamhaus.org",
			"bl.spamcop.net",
			"list.dsbl.org",
			"all.s5h.net",
			"blacklist.woody.ch",
		];
		
		$ip = "82.165.229.138";

			$reverse_ip = implode(".", array_reverse(explode(".", $ip)));
			
			foreach($hostnames as $hostname) {
			
				if (checkdnsrr($reverse_ip . "." . $hostname . ".", "A")) {

					$hosts[] = $hostname;
					
				}
					
			}
[/PHP]
Dies bräuchte 10-15sek zeit. Ich hab aber gehört es gibt auch libarys wo man die Funktion asynchron nutzen kann. Das alle Funktionen gleichzeitig laufen und man nicht 10-15sek warten muss sondern max 1-2sek.

Hab mir die libary geholt ([Only registered and activated users can see links. Click Here To Register...]) nur weiß ich echt nicht wie ich das jetzt mit meinem Skript einfüge.

Würde auch eine kleinigkeit spenden für eine erfolgreiche Hilfe (200 e*Gold).
11/18/2020 15:38 _robox#2
Das last sich sehr einfach mit Ajax realisieren. Dabei wird, wären der Eingaben in Hintergrund die Prüfung abgearbeitet.
11/18/2020 18:55 Cc_Cc_Cc#3
Quote:
Originally Posted by _robox View Post
Das last sich sehr einfach mit Ajax realisieren. Dabei wird, wären der Eingaben in Hintergrund die Prüfung abgearbeitet.
Ich glaube du meinst etwas anderes damit^^. Es geht um die Funktion checkdnsrr, dass alle Blacklists mit checkdnsrr gleichzeitig gestartet werden. Bei mir ist das Problem, es gibt keine festen Blacklists, es können auch 100 Blacklists einträge in den array drinne sein
11/18/2020 21:02 _robox#4
Wenn ich dich richtig versteh, möchtest du abfragen, ob eine Domain oder IP auf einer Backlist gelistet ist.
Und du willst alle abfragen auf einmal machen das ist nach meine wissen stand nicht möglich die Ursache liegt in der Arbeitsweise von PHP.
Einzige Möglichkeit ist es, die aufgab parallel in Hintergrund abzuarbeiten das muss aber irgendwie angestoßen werden. Dazu ist Ajax bestens geeignet.

Bei mir lauft dein Code übrigens mit 225ms ab, wen bei dir der Code 10-15s benötigt hat das ganz bestimmt andere Ursachen.
11/22/2020 16:23 Hyukisawa#5
Weiß nicht ob es hilft...

aber dieses Repository sollte helfen können.
Siehe Repository für Beschreibung

[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
11/23/2020 21:30 Cc_Cc_Cc#6
Quote:
Originally Posted by Hyukisawa View Post
Weiß nicht ob es hilft...

aber dieses Repository sollte helfen können.
Siehe Repository für Beschreibung

[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
Nutze derzeit [Only registered and activated users can see links. Click Here To Register...].
Es funktioniert auch, aber das komische nur bei XAMPP. Wenn ich die Sachen auf Filezilla ziehe und es auf mein Webhoster versuche bekomme ich diese Fehlermeldung.


Worker in pool exited unexpectedly with code -1 Line 250 on vendor/amphp/parallel/lib/Worker/DefaultPool.php Worker in pool exited unexpectedly with code -1 Line 250 on

Fatal error: Uncaught Amp\Process\ProcessException: Unable to list open file descriptors in /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/process/lib/Internal/Posix/Runner.php:142 Stack trace: #0 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/process/lib/Internal/Posix/Runner.php(88): Amp\Process\Internal\Posix\Runner->generateFds() #1 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/process/lib/Process.php(108): Amp\Process\Internal\Posix\Runner->start('{ ('/usr/bin/ph...', '', Array, Array) #2 [internal function]: Amp\Process\Process->Amp\Process{closure}() #3 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/amp/lib/Coroutine.php(67): Generator->current() #4 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/amp/lib/functions.php(96): Amp\Coroutine->__construct(Object(Generator)) #5 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/process/lib/Process.php(110): Amp\call(Object(Closure)) #6 /kunden/4 in /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/parallel/lib/Context/Process.php on line 202

Das ergibt NULL sinn..... wieso funktioniert es bei xampp aber nicht auf mein webhost
11/24/2020 09:44 False#7
Quote:
Originally Posted by Cc_Cc_Cc View Post
Nutze derzeit [Only registered and activated users can see links. Click Here To Register...].
Es funktioniert auch, aber das komische nur bei XAMPP. Wenn ich die Sachen auf Filezilla ziehe und es auf mein Webhoster versuche bekomme ich diese Fehlermeldung.


Worker in pool exited unexpectedly with code -1 Line 250 on vendor/amphp/parallel/lib/Worker/DefaultPool.php Worker in pool exited unexpectedly with code -1 Line 250 on

Fatal error: Uncaught Amp\Process\ProcessException: Unable to list open file descriptors in /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/process/lib/Internal/Posix/Runner.php:142 Stack trace: #0 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/process/lib/Internal/Posix/Runner.php(88): Amp\Process\Internal\Posix\Runner->generateFds() #1 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/process/lib/Process.php(108): Amp\Process\Internal\Posix\Runner->start('{ ('/usr/bin/ph...', '', Array, Array) #2 [internal function]: Amp\Process\Process->Amp\Process{closure}() #3 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/amp/lib/Coroutine.php(67): Generator->current() #4 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/amp/lib/functions.php(96): Amp\Coroutine->__construct(Object(Generator)) #5 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/process/lib/Process.php(110): Amp\call(Object(Closure)) #6 /kunden/4 in /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/parallel/lib/Context/Process.php on line 202

Das ergibt NULL sinn..... wieso funktioniert es bei xampp aber nicht auf mein webhost
Ich habe dir mal die relevanten Stellen Fett markiert im Zitat.
Wenn man sich gerade den zweiten Punkt anschaut mit der Kombination des Wortes "Webspace" sollte man schon eine Idee bekommen woran es liegen könnte... Wenn nicht solltest du dich mal bezüglich Sicherheit im PHP umfeld (u.a. shell exec etc) einlesen :-)

Stellst du deine Fragen eigentlich immer auf mehreren Seiten ? :confused:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
11/24/2020 12:23 Cc_Cc_Cc#8
Quote:
Originally Posted by False View Post
Ich habe dir mal die relevanten Stellen Fett markiert im Zitat.
Wenn man sich gerade den zweiten Punkt anschaut mit der Kombination des Wortes "Webspace" sollte man schon eine Idee bekommen woran es liegen könnte... Wenn nicht solltest du dich mal bezüglich Sicherheit im PHP umfeld (u.a. shell exec etc) einlesen :-)

Stellst du deine Fragen eigentlich immer auf mehreren Seiten ? :confused:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
Danke erstmal für die Anwort. Hab mir mal shell exec durchgelesen und man wollte es ja sanitieren mit escapeshellarg. Gut zur Info hätte das nicht gewusst^^.

Und wegen den Fragen, will euch nicht jedes mal nerven mit meinen Fragen deswegen mach ich selten mal eine Frage woanders.

Ich habe in google dies hier eingegeben: Unable to list open file descriptors aber keiner hat den Fehler. Was rauskommt ist sowas: "failed too open many files". Ich weiß gar nicht was ich machen soll mit dem Fehler code oder wo ich es beheben kann. Biete auch mein e*gold an, muss das Projekt in paar Tagen abgegeben.:(