chemaclass/shared-state

一个在不同进程之间共享状态的库。

dev-master 2023-01-30 23:00 UTC

This package is auto-updated.

Last update: 2024-08-29 05:50:53 UTC


README

目标

在PHP中实现不同进程之间的状态共享。

安装

composer require chemaclass/shared-state

动机

这个实验的动机是想要在需要知道一些共同数据的不同进程之间共享状态。乍一看,你可能认为一个常规的数据库就适合这种情况,比如MySQL、PostgreSQL,甚至是Mongo或Redis...但这里的想法是避免外部数据库系统的复杂性,保持简单。把它保存在一个文件中。

因为它们是不同的进程,所以在进程之间没有简单的方式来共享状态(不涉及在其他地方存储数据),因此我们必须依赖于PHP扩展或将在持久磁盘上保存数据。

这个库背后的主要思想是创建一个临时文件,该文件将在运行时保存想要在不同进程之间共享的状态。一旦所有进程都消耗了这些数据,就可以安全地删除该文件。

这意味着目标是能够在进程之间共享一个临时状态。

示例

您可以在example/main.php中查看示例。

cd example
php main.php

配置

此文件是可选的,因为您想要共享的每个状态都通过其id(任何原始字符串)进行引用和唯一标识。但是,如果您想定义一个自定义文件名(存储该临时值的位置),或者定义新旧存储记录之间的“分钟差异限制”,则可以自定义库的默认行为。

在项目的根目录中创建一个名为shared-states.php的文件,您可以定义应用程序不同共享状态的不同配置。例如

<?php
return [
    'id-bool' => [
        'file-name' => 'shared-boolean-state.json',
        'minutes-diff-limit' => 1,
    ],
    'id-string' => [
        'file-name' => 'shared-string-state.json',
    ],
    // ...
];

这些都是可选设置。文件名将使用共享状态的id(即此示例中的代码id-boolid-string)生成。但是,您可以使用任何喜欢的id。它不需要出现在此配置列表中。