• We run wp-stateless, meaning our wordpress containers are stateless, no storage (its stored in GCS). This works by redirecting the filesystem layer.

    This plugin emits these errors:

    [08-May-2025 14:42:50] WARNING: [pool www] child 75 said into stderr: "NOTICE: PHP message: PHP Warning: file_put_contents(): wpCloud\StatelessMedia\StreamWrapper::stream_lock is not implemented! in /app/wp-content/plugins/website-llms-txt/includes/class-llms-generator.php on line 119"
    [08-May-2025 14:42:50] WARNING: [pool www] child 75 said into stderr: "NOTICE: PHP message: PHP Warning: file_put_contents(): Exclusive locks are not supported for this stream in /app/wp-content/plugins/website-llms-txt/includes/class-llms-generator.php on line 119"

    I think for this plugin you should render the markdown into the database as a posttype, rather than assume writing to the fileystem.

    If it does write to the filesystem, it would need some way to handle multiple instances of wordpress (e.g. don’t want both instance regenerating at the same time).

    This prevents it functioning: it does not create the llms.txt file.

Viewing 2 replies - 1 through 2 (of 2 total)
  • Thread Starter donbowman

    (@donbowman)

    its also not as simple as just removing the lock, seems we are appending a bunch of small items rather than a single write, causing a rate limit issue.

    [08-May-2025 15:03:08] WARNING: [pool www] child 82 said into stderr: "NOTICE: PHP message: PHP Fatal error: Uncaught Google\Cloud\Core\Exception\ServiceException: {"error":{"code":429,"message":"The object agilicus/www/localhost.llms.txt exceeded the rate limit for object mutation operations (create, update, and delete). Please reduce your request rate. See https://cloud.google.com/storage/docs/gcs429.","errors":[{"message":"The object agilicus/www/localhost.llms.txt exceeded the rate limit for object mutation operations (create, update, and delete). Please reduce your request rate. See https://cloud.google.com/storage/docs/gcs429.","domain":"usageLimits","reason":"rateLimitExceeded"}]}} in /app/wp-content/plugins/wp-stateless/lib/Google/vendor/google/cloud-core/src/RequestWrapper.php:434"

    Plugin Author Pavlo Samsonov

    (@samsonovteamwork)

    Hi @donbowman, thank you again for the valuable insights — you’re absolutely right.

    We’ve implemented major improvements in version 7.0.0 to address the challenges in stateless and large-scale environments:

    ✅ The plugin no longer relies on real-time synchronous file writes.
    ✅ All generation is now handled via asynchronous cron jobs, minimizing any impact on frontend or admin experience.
    ✅ A dedicated llms_txt_cache database table is now used to index and store structured content before the file is created.
    ✅ Final export writes the file in chunks (500 records per batch) instead of appending each entry one-by-one, significantly reducing I/O operations and improving compatibility with stateless systems.

    We did evaluate update_option()-based fallbacks, but they’re not suitable for large datasets — our DB-first caching model avoids memory and timeout issues while preserving performance.

    Let us know if you run into anything else — we’re actively improving support for multi-instance and stateless environments in future updates.

Viewing 2 replies - 1 through 2 (of 2 total)

The topic ‘Does not function with wp-stateless’ is closed to new replies.