As a web developer, you must know the importance of website performance to user experience and search engine rankings. To maintain a high-performance website, regular performance testing is required to detect and optimize website performance. Well, in this article, we will introduce how to use PHP and Lighthouse for website performance testing.
Lighthouse is an open source tool developed by Google for testing the quality and performance of web applications. It not only tests the speed of a web page, but also evaluates its accessibility, best practices, and search engine optimization. Generally speaking, we can use Lighthouse in Chrome browser, but if you need to integrate Lighthouse testing into your CI/CD pipeline or script, PHP is a good choice.
First of all, you need to make sure you have installed PHP and have some basic knowledge of PHP. Next, we need to install the Lighthouse PHP package. You can do it using the following command in the terminal:
composer require nunomaduro/laravel-mix-phplighthouse --dev
Here we use the nunomaduro/laravel-mix-phplighthouse package because it provides simple and easy-to-use commands to run Lighthouse tests and can easily Integrated with Laravel Mix. If you are not using Laravel Mix, consider using other PHP Lighthouse packages.
After the installation is complete, we need to set some configuration options of Lighthouse. Create a lighthouse.php file in the root directory of the project and add the following content:
<?php return [ 'temp_dir' => 'storage/app/lighthouse', 'chrome_path' => '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', 'chrome_flags' => [ '--show-paint-rects', '--headless', ], 'audits' => [ 'first-contentful-paint', 'largest-contentful-paint', 'first-meaningful-paint', 'speed-index', 'total-blocking-time', 'cumulative-layout-shift', 'interactive', 'uses-long-cache-ttl', 'user-timings', 'critical-request-chains', 'redirects', 'content-width', 'font-display', 'optimal-images', ], ];
In this configuration file, we define several options:
- temp_dir: Specify Lighthouse The directory where test data is saved.
- chrome_path: Specify the location of the Chrome browser.
- chrome_flags: Specify some parameters of the Chrome browser, for example --headless means running in headless mode.
- audits: Specify the audit items used in Lighthouse testing. Here we have selected some commonly used audit items, you can add or delete them according to your needs.
Next, create a file named test.php in the root directory of the project and add the following content:
<?php require_once __DIR__.'/vendor/autoload.php'; use NunoMaduroPHPUnitLaravelTestCasesBrowserTestCase; class LighthouseTest extends BrowserTestCase { public function testPerformance() { $this->artisan('lighthouse https://www.example.com --json --no-interaction'); $output = json_decode(file_get_contents(base_path('storage/app/lighthouse/report.json')), true); $this->assertArrayHasKey('audits', $output['categories']); } }
In this file we created a file named LighthouseTest Test class, in this class, we define a test method called testPerformance. In this method, we use Artisan commands to run Lighthouse tests and save the results in JSON format to the specified directory. We then use the assertArrayHasKey method to check whether the Audits section is included in the test results.
Now you can run the test. Use the following command in the terminal to run the test:
./vendor/bin/phpunit --filter=LighthouseTest
This will run the testPerformance test method in the LighthouseTest test class we just created. If everything goes well, you will see that the test passed and a report.json file was generated in the storage/app/lighthouse directory, containing detailed information about the test results.
In addition to using the command line, we can also integrate Lighthouse testing into our PHP applications. Suppose we have a script named performancelog.php to record the performance of each page, then we can add the following code in this script to run the Lighthouse test:
require_once __DIR__.'/vendor/autoload.php'; use NunoMaduroPHPUnitLaravelTestCasesBrowserTestCase; class LighthouseTest extends BrowserTestCase { public function run() { $url = 'https://www.example.com'; $this->artisan("lighthouse {$url} --json --no-interaction"); $output = json_decode(file_get_contents(base_path('storage/app/lighthouse/report.json')), true); $categories = array_intersect_key($output['categories'], array_flip(['performance'])); $score = array_sum(array_column($categories['performance']['auditRefs'], 'score')) / count($categories['performance']['auditRefs']); file_put_contents('performance.log', "{$url}: {$score} ", FILE_APPEND); } } $LighthouseTest = new LighthouseTest; $LighthouseTest->run();
In this example, we use Lighthouse test The specified URL and log the score to the performance.log file. You can run this script periodically to monitor the performance of your web application.
In this article, we introduce how to use PHP and Lighthouse for website performance testing. Whether you are a web developer or a system administrator, you can use this tutorial to instrument and optimize the performance of your web applications.
The above is the detailed content of How to use PHP and Lighthouse for website performance testing. For more information, please follow other related articles on the PHP Chinese website!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

Dreamweaver Mac version
Visual web development tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft
