2017-12-19 16 views
1

Ich habe unter Skript, um eine Seite zu öffnen und einen Screenshot zu machen.Führen Sie mehrere Puppenspieler auf einmal

const puppeteer = require('puppeteer'); 

    (async() => { 
     const browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] }); 
     const page = await browser.newPage(); 


     await page.goto('https://example'); 
     const elems = await page.$('.thumbnail'); 

     await elems.screenshot({ path: 'thumbnail.png', type: 'png' }); 

     browser.close(); 

     await console.log("done"); 
     })(); 

Ich führe es über php exec Befehl wie unten.

exec("node test.js ".$mainid." 2>&1", $out, $err); 
print_r($out); 
print_r($err); 

Seine Arbeit gut, wenn ich den PHP-Skript ein time.But laufen Wenn ich gleich Skript gleichzeitig ausführen, wird ein in der Mitte zu stoppen und ein andere druckt Fehlercode

ich kopflos versucht Modus falsch und browser.newPage ("neuer Kontext"); wie in ihren GitHub-Seiten erwähnt, funktioniert immer noch nicht.

+0

Laufende Ports könnte ein Problem sein? – Thamaraiselvam

+0

nein, ich schätze seine schließende aktuelle Instanz und öffne neue Instanz – Vishnu

+0

Hast du versucht, über mehrere Terminals zu laufen anstatt über PHP zu versuchen? – Thamaraiselvam

Antwort

1

PHP blockiert die nächste Ausführung, bis die aktuelle beendet ist. Deshalb unterscheidet es sich von nodejs. Controlling Nodejs von PHP wird seinen eigenen Anteil an Problemen haben.

Wenn Sie diese Zeile duplizieren und ausführen, sehen Sie nur einen Chrom und der nächste wird nicht ausgeführt, wenn der aktuelle nicht geschlossen wird.

exec("node test.js ".$mainid." 2>&1", $out, $err); print_r($out); print_r($err); 
exec("node test.js ".$mainid." 2>&1", $out, $err); print_r($out); print_r($err); 

Normalerweise ist es keine gute Idee, PHP für non-blocking App zu verwenden, es ist einfach nicht das richtige Werkzeug für das, aber wenn Sie noch steuern möchten und nicht blockierende App erstellen mit PHP, müssen Sie lernen, mehr über PCNTL oder ReactPHP

Verwandte Themen