0

我正在开发一个应用程序,该应用程序使用一些保存的数据稍后使用它。我不能使用数据库,所以这必须是基于文件的。

事情是这样的:

  • 一个名为 hosts.txt 的文件名,每行都包含 host:service(不同的主机和服务)。
  • 我的 PHP 文件逐行读取 txt,由分隔符“:”分割,并使用刚刚接收的数据发出请求。

直到这里,酷。我还有另一个文件(一个 HTML 表单),允许我在文件末尾添加它。但我的问题是下一个:

我希望能够从文件中添加和删除它,以便在下一次检查完成时(每 30 秒进行一次检查)数据应该被更新。

例子:

host.txt 包含以下内容:

host1:service1
host1:service2
host2:service2
host3:service1

现在我希望能够向列表中添加一个新的主机:服务(我已经通过在文本文件末尾添加新数据来完成此操作,然后当 php 再次读取行时,它将包含在下一次检查中按行。现在,如何从文件中删除主机:服务?

我的意思是,在读取文件之后,PHP 会做这样的事情:

Host: Host1   |    Service: Service1   |  Status: Warning (this will depend on the HTTP request I will make)     (X)
Host: Host1   |    Service: Service2   |  Status: OK     (X)
Host: Host3   |    Service: Service1   |  Status: Critical     (X)

我希望能够通过单击 (X) 从列表(和文件)中删除主机:服务。这可能是伙计们吗?我有点迷茫(我很容易使用数据库,但我不能在这个项目上)。

我希望我能弄清楚一些事情。预先感谢,问候。

4

2 回答 2

1

大致:

1)对文本文件中的输入进行分解,以便您拥有一个编号数组。

2)为html中的每一行设置一个id(每个行号的整数)

3)制作一个具有“点击”监听器的jquery函数

4) 创建一个以整数作为输入的 AJAX 脚本

5)再次读取hosts.txt,删除与数字对应的行(unset($array ['linenumber']))

6)内爆输入,写入文件(覆盖旧文件)

7)重新加载页面(或隐藏行)

于 2013-03-27T11:21:15.433 回答
1

在 PHP 中,你想做这样的事情:

代码

$string = 'host1:service1
host1:service2
host2:service2
host3:service1';

$splitted = explode("\n", $string);

$data = array();

foreach ($splitted as $key => $value) {
    $data[$key] = explode(':', $value);
}

echo '<pre>';
print_r($data);
echo '<pre>';

您现在拥有结构化数据,您可以检查某些值是否匹配或属于特定类别。对输出的控制现在完全掌握在您手中。

输出

Array
(
    [0] => Array
        (
            [0] => host1
            [1] => service1
        )

    [1] => Array
        (
            [0] => host1
            [1] => service2
        )

    [2] => Array
        (
            [0] => host2
            [1] => service2
        )

    [3] => Array
        (
            [0] => host3
            [1] => service1
        )

)

如果您在输出数据时仍有问题,请随时在评论中提问,我会更新答案。

于 2013-03-27T11:27:15.017 回答