2016-04-29 50 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命令。非常感謝! –

相關問題