2015-12-31 2 views
0

Есть несколько похожих вопросов, но ни один из них не помог мне. Все остальные вопросы касались номера версий, но мне нужно было что-то, что только увеличило бы номер сборки.Как автоматически увеличить номер сборки в PHP

мне нужен скрипт, который будет проверять, есть ли какие-либо файлы, измененные/создавать/удалять и увеличивать номер сборки на 1.

Я не смог найти ответ на этот вопрос в Интернете и подготовили сценарий сам. Я задаю этот вопрос, поэтому я могу поделиться своим сценарием в качестве ответа.

Вот сценарий, который я придумал. Вы можете улучшить его дальше и изменить свой ответ или опубликовать свой ответ:

// Opening the json file that holds the file paths and file modification dates 
$jsonArray = json_decode(file_get_contents('files.json'), true); 
$jsonFileArray = array(); 

// Putting the values into a local array 
foreach ($jsonArray as $filePath => $modifiedDate) { 
    $jsonFileArray[$filePath] = $modifiedDate; 
} 


// Iterating through the directories and putting the file paths and modification dates into a local array 
$filesArray = array(); 
$dir_iterator = new RecursiveDirectoryIterator("."); 
$recursive_iterator = new RecursiveIteratorIterator($dir_iterator); 
foreach ($recursive_iterator as $file) { 
    if ($file->isDir()) { 
     continue; 
    } 
    if (substr($file, -9) != 'error_log') { 
     $fileName = $file->getPathname(); 
     $fileModifiedDate = date('m/d/y H:i:s', $file->getMTime()); 
     $filesArray[$fileName] = $fileModifiedDate; 
    } 
} 


// Checking if there are any files that are modified/created/deleted 
if ($jsonFileArray != $filesArray) { 

    // If there are any changes, the build number is increased by 1 and saved into 'build' file 
    $buildFile = "build"; 
    file_put_contents($buildFile, file_get_contents($buildFile) + 1); 
} 


// Updating the json file with the latest modifiedDates 
$jsonFile = fopen('files.json', 'w'); 
fwrite($jsonFile, json_encode($filesArray, JSON_UNESCAPED_SLASHES)); 
fclose($jsonFile); 
+2

Ничего себе, это быстрый downvote (в течение 2 секунд). Я не думаю, что вы даже можете прочитать этот вопрос за 2 секунды. –

+0

Я считаю, что вас проголосовали за то, что ваш вопрос не показывает никаких усилий и ужасно широк. У вас есть пара близких голосов, оба из которых указывают, что ваш вопрос слишком широк. –

+0

Downvoting в порядке, я не против этого. Но downvoting, даже не читая этот вопрос, нелепо. Вместо этого он должен был добавить комментарий, поэтому я могу улучшить вопрос. Я добавил свой код в вопрос и попытался прояснить его дальше в тексте. Я пытаюсь сделать этот вопрос качественным, но downvotes не очень помогают. Пожалуйста, добавьте комментарий или отредактируйте вопрос самостоятельно, если вы хотите его улучшить. –

ответ

1

Приведенный ниже код извлекает все файлы в директории, помещает их в массив и сохраняет его в виде файла JSON. Когда сценарий запускается снова, он снова извлекает все файлы и даты изменения и сравнивает их с файлом JSON. Если есть какие-либо изменения (например, файлы были изменены/созданы/удалены), он увеличивает номер сборки на 1.

// Opening the json file that holds the file paths and file modification dates 
$jsonArray = json_decode(file_get_contents('files.json'), true); 
$jsonFileArray = array(); 

// Putting the values into a local array 
foreach ($jsonArray as $filePath => $modifiedDate) { 
    $jsonFileArray[$filePath] = $modifiedDate; 
} 


// Iterating through the directories and putting the file paths and modification dates into a local array 
$filesArray = array(); 
$dir_iterator = new RecursiveDirectoryIterator("."); 
$recursive_iterator = new RecursiveIteratorIterator($dir_iterator); 
foreach ($recursive_iterator as $file) { 
    if ($file->isDir()) { 
     continue; 
    } 
    if (substr($file, -9) != 'error_log') { 
     $fileName = $file->getPathname(); 
     $fileModifiedDate = date('m/d/y H:i:s', $file->getMTime()); 
     $filesArray[$fileName] = $fileModifiedDate; 
    } 
} 


// Checking if there are any files that are modified/created/deleted 
if ($jsonFileArray != $filesArray) { 

    // If there are any changes, the build number is increased by 1 and saved into 'build' file 
    $buildFile = "build"; 
    file_put_contents($buildFile, file_get_contents($buildFile) + 1); 
} 


// Updating the json file with the latest modifiedDates 
$jsonFile = fopen('files.json', 'w'); 
fwrite($jsonFile, json_encode($filesArray, JSON_UNESCAPED_SLASHES)); 
fclose($jsonFile); 
+0

Пожалуйста, отредактируйте свое исходное сообщение, чтобы добавить в свой вопрос любую информацию, такую ​​как этот код. –

+1

Я изменил его. Я считаю, что этот вопрос очень ясен. Я спросил его, чтобы поделиться своими знаниями. Насколько я знаю, все дело в том, что существуют такие форумы, как SO: поэтому мы можем поделиться своими знаниями. –

+0

Да ..... и нет. SO не является дискуссионным форумом, это вопрос и вопрос. *** Хороший ответ *** всегда будет объяснять, что было сделано, и почему это было сделано именно так, не только для OP, но и для будущих посетителей SO. Неясно, что вы отвечали на свой вопрос. –