PHP code example of iprodev / sitemap-generator-pro
1. Go to this page and download the library: Download iprodev/sitemap-generator-pro library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use IProDev\Sitemap\Fetcher;
use IProDev\Sitemap\Crawler;
use IProDev\Sitemap\SitemapWriter;
use IProDev\Sitemap\RobotsTxt;
$fetcher = new Fetcher(['concurrency' => 20]);
$robots = RobotsTxt::fromUrl('https://example.com', $fetcher);
$crawler = new Crawler($fetcher, $robots);
$pages = $crawler->crawl('https://example.com', 10000, 5);
$files = SitemapWriter::write($pages, './sitemaps');
use IProDev\Sitemap\Database\Database;
use IProDev\Sitemap\ChangeDetector;
// Initialize database
$db = new Database('sqlite:./sitemap.db');
$db->createTables();
// Start crawl
$domain = 'example.com';
$crawlId = $db->startCrawl($domain, 'https://example.com', []);
// Crawl and save
foreach ($pages as $page) {
$db->saveUrl($crawlId, $page);
}
// Detect changes
$prevCrawl = $db->getPreviousCrawl($domain, $crawlId);
if ($prevCrawl) {
$detector = new ChangeDetector($db);
$changes = $detector->detectChanges($prevCrawl['id'], $crawlId);
print_r($changes);
}
use IProDev\Sitemap\Analyzer\SeoAnalyzer;
$analyzer = new SeoAnalyzer();
foreach ($pages as $page) {
$analysis = $analyzer->analyze(
$page['url'],
$page['html'],
$page['status_code']
);
echo "Score: {$analysis['score']}/100\n";
echo "Issues: " . count($analysis['issues']) . "\n";
}
use IProDev\Sitemap\Cache\FileCache;
use IProDev\Sitemap\Cache\RedisCache;
// File cache
$cache = new FileCache('./cache', 3600);
// Redis cache
$cache = new RedisCache('127.0.0.1', 6379);
// Use in fetcher
$fetcher = new Fetcher(['cache' => $cache]);
use IProDev\Sitemap\Fetcher;
use IProDev\Sitemap\Crawler;
use IProDev\Sitemap\SitemapWriter;
use IProDev\Sitemap\RobotsTxt;
$fetcher = new Fetcher(['concurrency' => 10]);
$robots = RobotsTxt::fromUrl('https://example.com', $fetcher);
$crawler = new Crawler($fetcher, $robots);
$pages = $crawler->crawl('https://example.com', 1000, 3);
SitemapWriter::write($pages, './output');
// In code, configure Guzzle to skip verification (not recommended for production)
$fetcher = new Fetcher(['verify' => false]);