PHPackages                             danack/sitetool - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. danack/sitetool

AbandonedArchivedLibrary[Utility &amp; Helpers](/categories/utility)

danack/sitetool
===============

Event based site tool and tester.

0.1.2(7y ago)5332[1 issues](https://github.com/Danack/SiteTool/issues)MITPHPPHP ^7

Since Oct 30Pushed 7y ago3 watchersCompare

[ Source](https://github.com/Danack/SiteTool)[ Packagist](https://packagist.org/packages/danack/sitetool)[ RSS](/packages/danack-sitetool/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependencies (15)Versions (9)Used By (0)

SiteTool
========

[](#sitetool)

A couple of very simple tools for checking sites and site migration.

Site crawler
------------

[](#site-crawler)

Crawls a site to find all links, and then fetches them. Run with:

```
php cli.php site:crawl http://phpimagick.com/

```

Reults by default will be written to 'crawl\_result.txt'.

Migration checker
-----------------

[](#migration-checker)

Once a site has been crawled, then you can check to see if the same paths are available on a different domain.

```
php -d memory_limit=1280M src/cli.php site:migratecheck phpimagick.com www.phpimagick.com

```

This allows you to check that migrating to a new platform hasn't lost any paths.

Visualizing events
------------------

[](#visualizing-events)

As the whole application is tied together using events, it can be difficult to comprehend how the different parts of the app fit together.

Appending `--graph` to any of the commands will make the application generate a graph of how the events + processors are tied together for that command, rather than running the command.

The graph generation depends on having graphviz available. There is a docker composer file for this project to allow generating graphs inside that, which can be invoked with something like.

```
docker-compose up --build

docker exec sitetool_php_1 php cli.php site:crawl http://phpimagick.com/ --graph

```

If the project is not checked out to a directory named 'sitetool' you may need to run `docker ps` to find the exact docker image name.

Naming things
-------------

[](#naming-things)

### Event names

[](#event-names)

Event names should be a past tense phrase that described what has happened. Examples:

FoundUrl FoundUrlToFetch FoundUrlToSkip
ReceivedHtml ResponseWasOk ResponseWasError ResponseWasReceived

Processor names
---------------

[](#processor-names)

Processor names should be of the form 'verb' + 'object' or 'verb' + 'object' + 'condition'. If possible use the event name as the object.

CheckResponseContentTypeIsHtml CheckResponseIsOk FetchUrl LogResponseWasOk LogResponseWasError LogFoundUrlToSkip ParseReceivedHtmlToFindUrls DecideFoundUrlShouldBeFollowed

Where it makes sense, use the event name that is being listened for, in the procesor name.

php phpstan.phar analyze -c ./phpstan.neon -l 7 src

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance16

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 87.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~118 days

Recently: every ~147 days

Total

6

Last Release

2893d ago

PHP version history (2 changes)0.0.1PHP ^5.4 | ^7

0.1.0PHP ^7

### Community

Maintainers

![](https://www.gravatar.com/avatar/9db967c6005625e444a502fb830a30669b9fed53bfbc67e81a054508c0975a6b?d=identicon)[Danack](/maintainers/Danack)

---

Top Contributors

[![Danack](https://avatars.githubusercontent.com/u/1505719?v=4)](https://github.com/Danack "Danack (41 commits)")[![PeeHaa](https://avatars.githubusercontent.com/u/1330296?v=4)](https://github.com/PeeHaa "PeeHaa (4 commits)")[![DanFuture](https://avatars.githubusercontent.com/u/28150630?v=4)](https://github.com/DanFuture "DanFuture (2 commits)")

---

Tags

crawler

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/danack-sitetool/health.svg)

```
[![Health](https://phpackages.com/badges/danack-sitetool/health.svg)](https://phpackages.com/packages/danack-sitetool)
```

###  Alternatives

[jaybizzle/crawler-detect

CrawlerDetect is a PHP class for detecting bots/crawlers/spiders via the user agent

2.3k96.7M215](/packages/jaybizzle-crawler-detect)[wa72/htmlpagedom

jQuery-inspired DOM manipulation extension for Symfony's Crawler

3383.9M34](/packages/wa72-htmlpagedom)[vdb/php-spider

A configurable and extensible PHP web spider

1.4k181.0k7](/packages/vdb-php-spider)[jaybizzle/laravel-crawler-detect

A Laravel package to detect web crawlers via the user agent

3232.6M17](/packages/jaybizzle-laravel-crawler-detect)[crwlr/crawler

Web crawling and scraping library.

37214.8k2](/packages/crwlr-crawler)[friends-of-hyva/magento2-crawler-session

Prevent crawlers from creating a session

155.8k](/packages/friends-of-hyva-magento2-crawler-session)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
