@alexmixaylov

Как из pupetter вернуть результат(json) в вызывающий PHP скрипт?

По крону нужно обновлять информацию которая парсится со стороннего сайта
Скрипт на PHP запускает JS с
use Symfony\Component\Process\Process;

            $process = new Process(['node', $file, '--container=' . $container]);
            try {
                $process->mustRun();
                $response = $process->getOutput();
                dump(json_decode($response));

            } catch (ProcessFailedException $e) {
                dump('error', $e->getMessage());
            }

Мне нужно получить json который возвращается с сайта
делаю функцию
let result;

(async () => {
    try {
        const browser = await puppeteer.launch({
            headless: false,
            devtools: true
        });
        const page = await browser.newPage();

        const response = await page.goto(url, {waitUntil: ['load', 'domcontentloaded', 'networkidle0', 'networkidle2']});

        const acceptCookies = await Promise.all([
            page.waitForSelector('button.coi-banner__accept'),
            page.click('button.coi-banner__accept'),
        ]);

        await page.type('#trackShipmentSearch', containerNumber);
        await page.keyboard.press(String.fromCharCode(13));

        // теперь включаем перехват запросов
        await page.setRequestInterception(true);
        await page.on('response', async (response) => {
            if (response.url().includes("https://api.maerskline.com/track/")) {
                result = await response.json();
                console.log(result) // JSON RESULT OK
                // здесь перехватил результат, ВСЕ ОК
                await page.evaluate(() => window.stop())
            }
        });

        await console.log(result)// ЗДЕСЬ всегда  undefined
        await browser.close()

    } catch (err) {
        console.log(err)
    }
})();

Как мне можно вернуть json в вызывающий PHP скрипт?
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
uDenX
@uDenX
PHP Developer
https://symfony.com/doc/current/components/process...
https://stackoverflow.com/questions/17822437/pipe-...

Либо можете попробовать писать в отдельный поток
https://symfony.com/doc/current/components/process...
https://stackoverflow.com/questions/21491567/how-t...

Либо нода может сохранять результат куда-либо, а symfony после завершения периодически читать от туда
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы