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

时间:2016-04-29 16:50:23

标签: php cron

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

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

12:07:22 PM  [Apache]   Apache Service detected with wrong path
12:07:22 PM  [Apache]   Change XAMPP Apache and Control Panel settings or
12:07:22 PM  [Apache]   Uninstall/disable the other service manually first
12:07:22 PM  [Apache]   Found Path: "C:\Apache24\bin\httpd.exe" -k runservice
12:07:22 PM  [Apache]   Expected Path: "c:\xampp\apache\bin\httpd.exe" -k runservice

它们的名称与它们包含的$ steamid相同。在这种情况下76561198046273125.php。

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

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

然后

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

然后再次“翻转”它。

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

如何让脚本在整个“users”文件夹中循环,让每个文件都在这个过程中运行而不提供文件名列表?

编辑: 这样的事情可以起作用吗?

$amount = $amount - 10;

1 个答案:

答案 0 :(得分:0)

根据我的理解,您希望对外部文件中的其中一个变量进行操作并更新其值。 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);
}

聚苯乙烯。提防eval();

的危险