2016-04-29 101 views
-1

我创建了一个包含大量小php文件的平面文件数据库。逐个打开文件夹中的每个文件

每个文件都包含类似:

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

它们被命名为喜欢它们所包含的$ steamid。在这种情况下,76561198046273125.php。

我想使用一个cron作业来执行一个php文件,每10分钟将$ amount变量减少10。我设法通过打开一个文件要做到这一点:

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

然后

$amount = $amount - 10; 

,然后 “使用fwrite” 下来一次。

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

如何在整个“用户”文件夹中创建一个脚本循环,并使每个文件都在此过程中运行而不必提供文件名列表?


编辑: 所以像这样的东西可以工作?

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

    //...do some actions here... 

} 
?> 
+1

使用[glob()](http://www.php.net/manual/en/function.glob.php)或[scandir()](http:// www)从文件夹中读取文件名列表.php.net/manual/en/function.scandir.php) –

+0

https://secure.php.net/glob –

+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()的危险;

+0

对文件本身的操作已经有效。该文件应该作为文本文件打开,更改,保存并在需要时包含在另一个php文件中。我的问题是(或者 - 我们将会看到)在不知道名称的情况下遍历整个文件夹。 –

+0

我已经改变了glob函数的路径,你将不得不编辑那个 –

+0

嘿,这比预期的要容易得多。我是PHP新手,不知道glob命令。非常感谢! –

相关问题