Package Data | |
---|---|
Maintainer Username: | parweb |
Maintainer Contact: | freek@spatie.be (Freek Van der Herten) |
Package Create Date: | 2016-12-05 |
Package Last Update: | 2016-12-05 |
Home Page: | https://murze.be/2015/11/a-package-to-check-all-links-in-a-laravel-app/ |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-30 15:09:16 |
Package Statistics | |
---|---|
Total Downloads: | 13 |
Monthly Downloads: | 2 |
Daily Downloads: | 0 |
Total Stars: | 0 |
Total Watchers: | 2 |
Total Forks: | 0 |
Total Open Issues: | 0 |
This package provides a command that can check all links on your laravel app. By default it will log all links that do not return a status code in the 200- or 300-range. There's also an option to mail broken links.
If you like this package, take a look at the other ones we have made.
You're free to use this package (it's MIT-licensed), but if it makes it to your production environment you are required to send us a postcard from your hometown, mentioning which of our package(s) you are using.
Our address is: Spatie, Samberstraat 69D, 2060 Antwerp, Belgium.
The best postcards will get published on the open source page on our website.
You can install the package via composer:
composer require spatie/laravel-link-checker
Next, you must install the service provider:
// config/app.php
'providers' => [
...
Spatie\LinkChecker\LinkCheckerServiceProvider::class,
];
You must register the \Spatie\LinkChecker\CheckLinksCommand
:
// app/Console/Kernel.php
protected $commands = [
...
\Spatie\LinkChecker\CheckLinksCommand::class,
];
You can optionally publish the config-file with:
php artisan vendor:publish --provider="Spatie\LinkChecker\LinkCheckerServiceProvider" --tag="config"
This is the contents of the published config file:
return [
/**
* The base url of your app. Leave this empty to use
* the url configured in config/app.php
*/
'url' => '',
/**
* The profile determines which links need to be checked.
*/
'default_profile' => Spatie\LinkChecker\CheckAllLinks::class,
/**
* The reporter determines what needs to be done when the
* the crawler has visited a link.
*/
'default_reporter' => Spatie\LinkChecker\Reporters\LogBrokenLinks::class,
/**
* To speed up the checking process we'll fire off requests concurrently. Here
* you can change the amount of concurrent requests.
*/
'concurrency' => 10
/**
* Here you can specify configuration regarding the used reporters
*/
'reporters' => [
'mail' => [
/**
* The `from` address to be used by the mail reporter.
*/
'from_address' => '',
/**
* The `to` address to be used by the mail reporter.
*/
'to_address' => '',
],
],
];
You can start checking all links by issuing this command:
php artisan link-checker:run
Want to run the crawler on a different url? No problem!
php artisan link-checker:run --url=https://laravel.com
To frequently check all links you can schedule the command:
// app/console/Kernel.php
protected function schedule(Schedule $schedule)
{
...
$schedule->command('link-checker:run')->sundays();
}
By default the package will log all broken links. If you want to have them mailed instead, just specify
Spatie\LinkChecker\Reporters\MailBrokenLinks
in the default_reporter
option in the config file.
A crawlprofile determines which links need to be crawled. By default Spatie\LinkChecker\CheckAllLinks
is used,
which will check all links it finds. This behaviour can be customized by specify a class in the default_profile
-option in the config file.
The class must implement the Spatie\Crawler\CrawlProfile
-interface:
interface CrawlProfile
{
/**
* Determine if the given url should be crawled.
*
* @param \Spatie\Crawler\Url $url
*
* @return bool
*/
public function shouldCrawl(Url $url);
}
A reporter determines what should be done when a link is crawled and when the crawling process is finished.
This package provides two reporters: Spatie\LinkChecker\Reporters\LogBrokenLinks
and Spatie\LinkChecker\Reporters\MailBrokenLinks
.
You can create your own behaviour by making a class adhere to the Spatie\Crawler\CrawlObserver
-interface:
interface CrawlObserver
{
/**
* Called when the crawler will crawl the url.
*
* @param \Spatie\Crawler\Url $url
*/
public function willCrawl(Url $url);
/**
* Called when the crawler has crawled the given url.
*
* @param \Spatie\Crawler\Url $url
* @param \Psr\Http\Message\ResponseInterface|null $response
*/
public function hasBeenCrawled(Url $url, $response);
/**
* Called when the crawl has ended.
*/
public function finishedCrawling();
}
To make it easier to create a reporter, you can extend Spatie\LinkChecker\Reporters\BaseReporter
which
provides many useful methods.
Please see CHANGELOG for more information what has changed recently.
First start the test server in a seperate terminal session:
cd tests/server
./start_server.sh
With the server running you can execute the tests
composer test
Please see CONTRIBUTING for details.
If you discover any security related issues, please email freek@spatie.be instead of using the issue tracker.
Spatie is a webdesign agency based in Antwerp, Belgium. You'll find an overview of all our open source projects on our website.
The MIT License (MIT). Please see License File for more information.