Я использую библиотеку Symfony Chrome-PHP/Chrome, чтобы измерить производительность загрузки страницы. Некоторые страницы той же загрузки сайта, а некоторые нет, с операцией ошибки, проведенной после 30 -х годов. Увеличение тайм -аута до минуты и до двух, но это не помогает. Я не понимаю, в чем проблема, я надеюсь на помощь от людей, которые заботятся) Код функции: < /p>
public function checkPageMetrics(string $url, string $deviceType = 'desktop'): array
{
if (!in_array($deviceType, ['desktop', 'mobile'])) {
throw new \InvalidArgumentException('Device type must be either "desktop" or "mobile"');
}
$browserFactory = new BrowserFactory('/usr/bin/google-chrome');
$browser = $browserFactory->createBrowser([
'headless' => true,
'noSandbox' => true,
'windowSize' => $deviceType === 'mobile' ? [375, 812] : [1920, 1080],
'userAgent' => $deviceType === 'mobile'
? 'Mozilla/5.0 (Linux; Android 10; Pixel 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36'
: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
]);
try {
$page = $browser->createPage();
$page->addPreScript('Object.defineProperty(navigator, "webdriver", { get: () => false });');
$page->addPreScript('
window.performanceMetrics = {
ttfb: 0,
domInteractive: 0,
loadEventEnd: 0
};
new PerformanceObserver((list) => {
const entries = list.getEntries();
if (entries.length > 0) {
window.performanceMetrics.ttfb = entries[0].responseStart;
}
}).observe({type: "navigation", buffered: true});
document.addEventListener("readystatechange", () => {
if (document.readyState === "interactive") {
window.performanceMetrics.domInteractive = performance.now();
}
});
window.addEventListener("load", () => {
window.performanceMetrics.loadEventEnd = performance.now();
});
');
$navigation = $page->navigate($url);
$navigation->waitForNavigation(Page::LOAD, 30000);
$metrics = $page->evaluate('window.performanceMetrics')->getReturnValue();
return [
'device_type' => $deviceType,
'first_byte_ms' => round($metrics['ttfb']),
'interactive_ms' => round($metrics['domInteractive']),
'complete_load_ms' => round($metrics['loadEventEnd']),
'error' => null
];
} catch (\Exception $e) {
return [
'device_type' => $deviceType,
'first_byte_ms' => null,
'interactive_ms' => null,
'complete_load_ms' => null,
'error' => $e->getMessage()
];
} catch (OperationTimedOut $e) {
return [
'device_type' => $deviceType,
'first_byte_ms' => null,
'interactive_ms' => null,
'complete_load_ms' => null,
'error' => $e->getMessage()
];
} catch (NavigationExpired $e) {
return [
'device_type' => $deviceType,
'first_byte_ms' => null,
'interactive_ms' => null,
'complete_load_ms' => null,
'error' => $e->getMessage()
];
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... -timed-out
PHP Chrome-Php/Chrome ⇐ Php
Кемеровские программисты php общаются здесь
1748589336
Anonymous
Я использую библиотеку Symfony Chrome-PHP/Chrome, чтобы измерить производительность загрузки страницы. Некоторые страницы той же загрузки сайта, а некоторые нет, с операцией ошибки, проведенной после 30 -х годов. Увеличение тайм -аута до минуты и до двух, но это не помогает. Я не понимаю, в чем проблема, я надеюсь на помощь от людей, которые заботятся) Код функции: < /p>
public function checkPageMetrics(string $url, string $deviceType = 'desktop'): array
{
if (!in_array($deviceType, ['desktop', 'mobile'])) {
throw new \InvalidArgumentException('Device type must be either "desktop" or "mobile"');
}
$browserFactory = new BrowserFactory('/usr/bin/google-chrome');
$browser = $browserFactory->createBrowser([
'headless' => true,
'noSandbox' => true,
'windowSize' => $deviceType === 'mobile' ? [375, 812] : [1920, 1080],
'userAgent' => $deviceType === 'mobile'
? 'Mozilla/5.0 (Linux; Android 10; Pixel 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36'
: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
]);
try {
$page = $browser->createPage();
$page->addPreScript('Object.defineProperty(navigator, "webdriver", { get: () => false });');
$page->addPreScript('
window.performanceMetrics = {
ttfb: 0,
domInteractive: 0,
loadEventEnd: 0
};
new PerformanceObserver((list) => {
const entries = list.getEntries();
if (entries.length > 0) {
window.performanceMetrics.ttfb = entries[0].responseStart;
}
}).observe({type: "navigation", buffered: true});
document.addEventListener("readystatechange", () => {
if (document.readyState === "interactive") {
window.performanceMetrics.domInteractive = performance.now();
}
});
window.addEventListener("load", () => {
window.performanceMetrics.loadEventEnd = performance.now();
});
');
$navigation = $page->navigate($url);
$navigation->waitForNavigation(Page::LOAD, 30000);
$metrics = $page->evaluate('window.performanceMetrics')->getReturnValue();
return [
'device_type' => $deviceType,
'first_byte_ms' => round($metrics['ttfb']),
'interactive_ms' => round($metrics['domInteractive']),
'complete_load_ms' => round($metrics['loadEventEnd']),
'error' => null
];
} catch (\Exception $e) {
return [
'device_type' => $deviceType,
'first_byte_ms' => null,
'interactive_ms' => null,
'complete_load_ms' => null,
'error' => $e->getMessage()
];
} catch (OperationTimedOut $e) {
return [
'device_type' => $deviceType,
'first_byte_ms' => null,
'interactive_ms' => null,
'complete_load_ms' => null,
'error' => $e->getMessage()
];
} catch (NavigationExpired $e) {
return [
'device_type' => $deviceType,
'first_byte_ms' => null,
'interactive_ms' => null,
'complete_load_ms' => null,
'error' => $e->getMessage()
];
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79645039/php-chrome-php-chrome-timed-out[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия