asynchronische code werkt niet in chomr headless

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Daniel van Seggelen

Daniel van Seggelen

31/03/2022 19:06:59
Quote Anchor link
In centos 8 wil ik chrome headless browser gebruiken.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
google-chrome-stable --headless --disable-gpu --disable-dev-shm-usage --no-sandbox --disable-software-rasterizer https://www.testurl.nl/test.php


Als ik in de webbrowser GUI Version 100.0.4896.60 (Official Build) (64-bit) dan werkt de volgende code wel goed:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const delay = (ms) => {
  return new Promise((resolve) => {
    setTimeout(() => resolve(), ms);
  }, ms);
};

$(async function() {
  for (var i = 0; i < 20; i++) {
    await delay(13000);
    nextSlide();
    await delay(1000);
    nextSlideAan();    
  }
});


Maar in headless laad hij nextSlide en nextSlide Aan niet.

Weet iemand hoe dit te debuggen is?

Ik heb google chrome 99.0.48.44.82
 
PHP hulp

PHP hulp

26/06/2022 12:32:58
 
Jan Koehoorn

Jan Koehoorn

31/03/2022 19:34:53
Quote Anchor link
Je arrow functie bevat geen keyword 'async', dus moet je 'delay' dan wel met 'await' aanroepen?

Edit: of, andersom, doe dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
const delay = async (ms) => {
// etc


Edit 2: vergeet die tweede tip maar, want ik neem aan dat je een delay functie juist NIET asynchroon wilt laten verlopen ;-)

Edit 3: aan dat dollarteken te zien gebruik je jQuery? Ik vraag me af of die shortcut function voor het document-ready event wel werkt in de headless-versie van Chrome.
Gewijzigd op 31/03/2022 19:44:46 door Jan Koehoorn
 
Daniel van Seggelen

Daniel van Seggelen

31/03/2022 19:44:12
Quote Anchor link
Helaas hetzelfde resultaat. Snap er niks van. Maar via de GUI in windows dan, doet hij het wel
 
Jan Koehoorn

Jan Koehoorn

31/03/2022 19:45:48
Quote Anchor link
Met andere woorden, of dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$(function(){
    console.log('dom ready!');
});

werkt in die headless versie
 
Daniel van Seggelen

Daniel van Seggelen

31/03/2022 20:24:21
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$( document ).ready(function() {


stond er wel boven.

Ik heb het nu geprobeert met firefox

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
firefox -headless https://www.test.nl.php?cat=supermarkt
firefox -headless https://www.test.nl?cat=kleding-schoenen-en-accesoires


De code werkt wel goed, alleen in een batch pakt hij de tweede niet.
Ik snap de errors in de CLI niet helemaal nog.

Quote:
firefox headless glx test unable to open a connection to the x server
RenderCompositorSWGL failed mapping default framebuffe


Hij blijft dus hangen na de eerste.

Ik log in met root, maar via sudo werkt deze, waarom is het zo moeilijk met root? Ik dacht dat root juist alle rechten had.

Toevoeging op 31/03/2022 21:05:14:

Ik zie het al er moet een spatie tussen op 1 lijn, dan werkt het.
Alleen nu kom ik er niet uit met:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
TASKKILL /IM firefox.exe /F

pause>nul

exit


AAn het einde die ik plaats.
Hoe exit ik de batch als het klaar is?Hij blijft maar hangen zeg maar.
 
Jan Koehoorn

Jan Koehoorn

04/04/2022 19:50:25
Quote Anchor link
Je zat op Centos zei je?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
pkill -f "(chrome)?(--headless)"
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.