php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 04-12-2007, 17:27
leb0rtran
 Newbie
Links : Onlinestatus : leb0rtran ist offline
Registriert seit: Nov 2007
Beiträge: 33
leb0rtran ist zur Zeit noch ein unbeschriebenes Blatt
Standard Script teil in mehreren Thraeds laufen lassen

moin,

ich hab hier n script der relativ langsam is, aber schneller wäre wenn man ihn mehrmals gleichzeiting laufen lässt (also mit anderen parametern)

PHP-Code:
$host = array('www.google.de','www.msn.de'); // sin am ende dann viel mehr xD
foreach ($host as $wert) {
    
$res shell_exec('whosip.exe '.$wert); // macht ne whoisabfrage, dauert etwas lang, müsste aber zu beschleunigen sein da das inet ja nich komplett ausgelastet wird ....
// $res müsste dann ja acuh noch vom namen her geändert werden, damits nich jedesmal überschrieben wird oda
    
$res explode("\n",$res);


wie mach ich das nu?
jemand ne idee?
Mit Zitat antworten
  #2 (permalink)  
Alt 04-12-2007, 19:35
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Du suchst proc_open()?
Mit Zitat antworten
  #3 (permalink)  
Alt 04-12-2007, 19:48
leb0rtran
 Newbie
Links : Onlinestatus : leb0rtran ist offline
Registriert seit: Nov 2007
Beiträge: 33
leb0rtran ist zur Zeit noch ein unbeschriebenes Blatt
Standard

oO
soweit ich den befehl verstanden habe nicht ...

is ja mit shell_exec() gelöst

der script der hier steht funktioniert, ist nur etwas langsam, weil php ha die exe ausführ und wartet bis ne antwort kommt und dann erst im code weitergeht

drumm möchste ich dass zB hier gleich die 2 element im array $host ausgeführt werden, also

$res = shell_exec('whosip.exe '.'www.google.de');
$res = shell_exec('whosip.exe '.'www.msn.de');

gleichzeitig, nicht nacheinander

damit $res dann nich überschrieben wird müsste man dann ahlt n bissle was ändern, zB

$res[] = shell_exec('whosip.exe '.'www.google.de');
$res[] = shell_exec('whosip.exe '.'www.msn.de');

wie geht das?
Mit Zitat antworten
  #4 (permalink)  
Alt 04-12-2007, 19:52
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Das geht so nicht. Der PHP-Interpreter wartet auf die Rückgabe des ersten shell_exec() bevor er das nächste aufruft.

Du suchst proc_open().
Mit Zitat antworten
  #5 (permalink)  
Alt 04-12-2007, 20:31
leb0rtran
 Newbie
Links : Onlinestatus : leb0rtran ist offline
Registriert seit: Nov 2007
Beiträge: 33
leb0rtran ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok xD

d.h. mit dem befehl proc_open() fährt er gelich fort nachdem er den befehl ausgeführt hat, ohne auf ne antwort zu warten

aber das is antürlich acuh nich so nice, falls im array n paar 100 seiten stehen.

kann ich das irgentwie begrenzen, so zB auf 20-30?

edit: sry falls das schon im manual steht,a ber das was da steht blick ich atm nich ^^

Geändert von leb0rtran (04-12-2007 um 20:34 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 04-12-2007, 21:15
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Na klar kannst du das begrenzen. Es liegt doch an dir, wieviele Prozesse zu erzeugst.
Mit Zitat antworten
  #7 (permalink)  
Alt 04-12-2007, 21:37
leb0rtran
 Newbie
Links : Onlinestatus : leb0rtran ist offline
Registriert seit: Nov 2007
Beiträge: 33
leb0rtran ist zur Zeit noch ein unbeschriebenes Blatt
Standard

syr wenn cih mich grad total blöd anstell ^^ aber ich blick die funktion im manual ma überhauptnich

resource proc_open ( string $cmd , array $descriptorspec , array &$pipes [, string $cwd [, array $env [, array $other_options ]]] )

$cmd blick ich (bei mir: 'whosip.exe '.$wert)
aber die anderen leider nich

was is zB ne pipe?
und kannste mir ma die parameter erklären plz? (wenigstens array $descriptorspec , array &$pipes, da die 2 ja auch zwingend notwendig sein müssn)
Mit Zitat antworten
  #8 (permalink)  
Alt 04-12-2007, 21:50
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hast du dir das erste Beispiel im Manual mal angeschaut?
PHP-Code:
$descriptorspec = array(
   
=> array("pipe""r"),  // stdin is a pipe that the child will read from
   
=> array("pipe""w"),  // stdout is a pipe that the child will write to
   
=> array("file""/tmp/error-output.txt""a"// stderr is a file to write to
); 
Steht doch im Kommentar schön beschrieben.
Das dritte Argument ist nur eine Referenz. Du brauchst gar keine Werte anzugeben. $var reicht. Diese steht dir danach zur Verfügung um die Ein- und Ausgabe zu steuern
Weiteres dazu steht auch im Manual und im Beispiel zu dieser Fkt dort.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #9 (permalink)  
Alt 06-12-2007, 15:51
leb0rtran
 Newbie
Links : Onlinestatus : leb0rtran ist offline
Registriert seit: Nov 2007
Beiträge: 33
leb0rtran ist zur Zeit noch ein unbeschriebenes Blatt
Standard

klar habs ich mir durchgelesen, mehrmals
aber blicken tu ichs trotzdem nich

was is zB stdin, stdout, was is immer mit pipe gemeint ...

is dann jeder wert von $descriptorspec der befehl der ausgeführt werden soll oder wie

sry ich blicks einfach nich


PHP-Code:
$host = array('www.google.de','www.msn.de');

foreach (
$host as $wert) {
    
$descriptorspec[] = array($wert/*????*/);
}

process proc_open(whosip.exe$descriptorspec); 
oder wie soll das ausschauen??
Mit Zitat antworten
  #10 (permalink)  
Alt 06-12-2007, 16:00
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Aber lesen und Google benutzen kannst du ?
http://de.wikipedia.org/wiki/Stdin
http://de.wikipedia.org/wiki/Pipe_%28Informatik%29
http://de.wikipedia.org/wiki/Senkrechter_Strich
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #11 (permalink)  
Alt 06-12-2007, 16:19
leb0rtran
 Newbie
Links : Onlinestatus : leb0rtran ist offline
Registriert seit: Nov 2007
Beiträge: 33
leb0rtran ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok bringt mich nu auch nich viel weiter

jetzt weiß ich nur dasses falsch sein wird wie ichs geschrieben hab


kannst mir nich einfach sagen wies gehört?
weil langsam sinkt die motivation ...
Mit Zitat antworten
  #12 (permalink)  
Alt 06-12-2007, 16:27
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Und die Anwendungsbeispiele im Manual hast du auch angeschaut. Zumindest dieses schaut so aus als könntest du das übernehmen.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #13 (permalink)  
Alt 06-12-2007, 16:46
leb0rtran
 Newbie
Links : Onlinestatus : leb0rtran ist offline
Registriert seit: Nov 2007
Beiträge: 33
leb0rtran ist zur Zeit noch ein unbeschriebenes Blatt
Standard

aslo ich hab das ma so gemacht, kommt aber kein ergebniss ...

PHP-Code:
class Process
{
    public static function 
open($command)
    {
        
$retval '';
        
$error '';

        
$descriptorspec = array(
            
=> array('pipe''r'),
            
=> array('pipe''w'),
            
=> array('pipe''r')
        );

        
$resource proc_open($command$descriptorspec$pipesnull$_ENV);
        if (
is_resource($resource))
        {
            
$stdin $pipes[0];
            
$stdout $pipes[1];
            
$stderr $pipes[2];

            while (! 
feof($stdout))
            {
                
$retval .= fgets($stdout);
            }

            while (! 
feof($stderr))
            {
                
$error .= fgets($stderr);
            }

            
fclose($stdin);
            
fclose($stdout);
            
fclose($stderr);

            
$exit_code proc_close($resource);
        }

        if (! empty(
$error))
            throw new 
Exception($error);
        else
            return 
$retval;
    }
}
// ------------------------------------------------------------------

Process :: open('cat whosip.exe [url]www.google.de[/url]'); // da steht nur [url]www.[/url] google. de (ohne leerzeichen) ka was die forensoft da macht

echo "<pre>";
print_r($res);
echo 
"</pre>"

Process :: open('cat whosip.exe www.google.de');
das steht da ...

Geändert von leb0rtran (06-12-2007 um 16:51 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 07-12-2007, 09:10
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Und woher kommt die Var $res, die du da dumpen willst?
In deiner aktuellen Fassung müsstest du es eher so schreiben
PHP-Code:
var_dump(Process::open('cat whoisp.exe www.google.ch'); 
Oder den Wert der Var $res zuweisen, was du aber nicht machst.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

Geändert von jahlives (07-12-2007 um 09:13 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:46 Uhr.