逐个打开文件夹中的每个文件


Open every file in a folder one by one

我创建了一个包含许多小php文件的平面文件数据库。

每个文件都包含以下内容:

<?php
$amount = 350;
$status = 1;
$steamid = 76561198046273125;
?>

它们的名字就像它们包含的$stead一样。在这种情况下,76561198046273125.php.

我想使用cron作业来执行一个php文件,该文件每10分钟将$amount变量减少10。我通过以下方式打开了一个文件:

$userinfo = fopen("users/76561198046273125.php") or die("Unable to open file!");

然后

$amount = $amount - 10;

然后再次"转发"。

由于每个新用户都会创建一个新文件,所以我没有所有文件名的列表。

如何使脚本在整个"用户"文件夹中循环,并使每个文件都在这个过程中运行,而不给出文件名列表?


编辑:这样的东西能起作用吗?

<?php
foreach (glob('users/*.php') as $userfile) {
   $userinfo = fopen("$userfile") or die("Unable to open file!");
   //...do some actions here...
}
?>

据我所知,您希望对外部文件中的其中一个变量进行操作并更新其值。Fopen将以简单的文本文件而不是php文件的形式打开您的文件。为此,您必须将file_get_contents()与eval()一起使用。获取内部变量,减少数量,重新准备所有文本并覆盖原始文件。

尝试以下方法:

foreach (glob("/your/path/to/users/folder/*.php") as $filename) {
    $contents = file_get_contents($filename);
    eval($contents);
    $amount = $amount - 10;
    $new_string = "
        <?php'n
            '$amount = $amount;'n
            '$status = $status;'n
            '$steamid = $steamid;'n
        ?>"
    ;
    file_put_contents($filename, $new_string);
}

Ps。小心eval()的危险;