{"id":20781386,"url":"https://github.com/rixbeck/bolt-wd40","last_synced_at":"2026-05-16T13:08:19.778Z","repository":{"id":72062193,"uuid":"139130314","full_name":"rixbeck/bolt-wd40","owner":"rixbeck","description":"Experimental Bolt CMS application server on PHP Process Manager","archived":false,"fork":false,"pushed_at":"2018-06-30T15:42:33.000Z","size":13,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-31T13:40:20.176Z","etag":null,"topics":["asynchronous-programming","bolt-cms","cms","http-server","php","php-process","react"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rixbeck.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-29T09:32:39.000Z","updated_at":"2018-06-30T15:42:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"1f50a1cf-2f6b-4d7c-b25a-8bda25ece5dc","html_url":"https://github.com/rixbeck/bolt-wd40","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rixbeck/bolt-wd40","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rixbeck%2Fbolt-wd40","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rixbeck%2Fbolt-wd40/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rixbeck%2Fbolt-wd40/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rixbeck%2Fbolt-wd40/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rixbeck","download_url":"https://codeload.github.com/rixbeck/bolt-wd40/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rixbeck%2Fbolt-wd40/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33104006,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asynchronous-programming","bolt-cms","cms","http-server","php","php-process","react"],"created_at":"2024-11-17T13:44:04.571Z","updated_at":"2026-05-16T13:08:19.751Z","avatar_url":"https://github.com/rixbeck.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WD40 rust remover for [Bolt CMS](https://bolt.cm)\n\nWD40 is an experimental project that aims Bolt CMS running on Nitro and removes some \"PHP rust\" from that fantastic CMS \nproduct. In our case \"PHP rust\" means that typical nature of PHP rebuilding all code on each HTTP request.\nRather we are letting him to build the code on first request and run as a long running worker in non/blocking manner.\n\nThese are all based on ReactPHP and PHP-PM on top of it.\n\nWhat are we winning with this method beyond an incredible speed improvement? Enjoying a new aspect of coding and introducing\nnew technics of caching, optimizations and much more fun.\n\n## How's further...\n\nI recommend you first check what is asynchronous way of code execution and how it is implemented by \n[ReactPHP here](https://sergeyzhuk.me/reactphp-series) and [here](https://reactphp.org/).\n  \n## Then...\n\ncomes [PHP Process mnager](https://github.com/php-pm/php-pm) which *Is a Process Manager, Supercharger, and Load Balancer \nfor PHP Applications* so we are going to use it as *PHP rust remover* for Bolt. If you read the most remarkable section \nwill be the performance graph which promises a brutal speed up on requests.\n\nThe most important chapter is [how to prepare your PHP CGI environment](https://github.com/php-pm/php-pm/wiki/Use-without-Docker) \nyou have to do just once. \n\nBecause this stuff will run as a server, moreover on a Linux box I suppose you have all the usually requested tools like \nGit, Composer and so on. \n\n## And now...\n\nIf you want to live with instant reload of Bolt's config files under a running server in Linux environment you should install\n\n```bash\napt install inotify-tools\n```\n\nor under Mac\n\n```bash\n# MacPorts\n$ port install fswatch\n\n# Homebrew\n$ brew install fswatch\n```\n\nCheckout and prepare your WD40\n\n```bash\ngit clone https://github.com/rixbeck/bolt-wd40.git\ncd bolt-wd40\ncomposer install\n```\n  \nwhich will build up all the structure you need to run Bolt on nitro. To run the whole stuff you should start just the PM.\nThe process manager will sit here at\n\n```bash\n./vendor/php-pm/php-pm/bin/\n```\n  \nso we can invoke our Bolt CMS dragster server as\n\n```bash  \n./vendor/php-pm/php-pm/bin/ppm start --config=./app/config/ppm/ppm.json\n```\n\nPHP-PM and its workers are easily set up for debugging as PM document describes. In this case just use \n\n```\n./app/config/ppm/ppm-test.json\n```\n\nas process manager config. That's ensure for logging to console and only one worker for less confusion.\nSee other configuration options to customizing for your needs.\n\n## Surprises?\n\nI'm almost sure they're coming. Not just because this is a real experimental project but rather we may have things in Bolt\ncodebase possible aren't prepared to perform under this kind of circumstances despite how our codebase is designed carefully.\nAlthough I can tell you I haven't stepped into any deep dirt on my box so just go on!\n\n## Further more\n\nWhile Bolt and Php-PM are both sophisticated and well designed and highly extendable I can imagine points where they\ncan be boosted. A few of are at Bolt can be\n\n* **Bolt caching** - because our Bolt instances are persistent this way some of the cached portions of data can be put in plain PHP\nvariable space transparently with a PSR cache.\n* **PDO prepared statements** - with actively using prepared statements we could win SQL statement preparation time which \ncan be remarkable speed boost at DB intensive page loadings. \n\n...and at PHP-PM side\n\n* **WebSocket channel** - for low latency communications to Bolt or push notifications with clients.\n* **Remote admin statistics** - maybe, if we wants to know at client side what's going on at workers what about resources \nand load   \n   \nSomething I'm really curious - and think you are all - is about its reliability. However PHP-PM promises worker management on \nmemory leaks - which is PHP's most notorious attribution - we will see at work of course.\n\n## Collaboration\n\nI would be glad if this project would be a sort of \"heads up\" for other Bolters and join just for fun.\n\n  \n    ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frixbeck%2Fbolt-wd40","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frixbeck%2Fbolt-wd40","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frixbeck%2Fbolt-wd40/lists"}