PHP:如何动态更改文件中的输出

时间:2018-08-11 14:56:36

标签: php

重定向输出执行 minified.js 文件

file_put_contents("minified.js", $packer->pack());

这会将输出重定向到minified.js文件。如果我更改了代码中的任何内容,则不会在minified.js中更新输出。我必须始终删除内容,然后再次运行。

如何动态执行此操作,并使minified.js中的内容始终自动替换?

2 个答案:

答案 0 :(得分:0)

检查原始版本所在文件的最后修改时间。

$original_file = $_SERVER["DOCUMENT_ROOT"].'/main.js';

$last_modified = date("Y-m-d H:i:s", filemtime($original_file));

file_put_contents($last_modified, $_SERVER["DOCUMENT_ROOT"].'/date.txt');
$last_modified_read = file_get_contents($_SERVER["DOCUMENT_ROOT"].'/date.txt');

if(strtotime($last_modified_read) < strtotime($last_modified)){
  echo "Minify!";
  file_put_contents($_SERVER["DOCUMENT_ROOT"].'/date.txt', $last_modified);
}

filemtime()

答案 1 :(得分:0)

这是由于标头功能而发生的。 您在minified.php中的代码是...

代码

<?php 

// Načteme config 
require_once("../functions/config.php"); 
// Načteme adresáře 
$Directories = JS_Directories(); 
// Načteme soubory z adresářů 
$Buffer = ""; 
foreach ($Directories as $Directory) { 
foreach(glob($Directory . "*.js") as $File) { 
$Buffer .= file_get_contents($File); 
} 
}; 
// Načteme minifikátor 
require_once("minifier.php"); 
// Spustíme minifikátor 
$packer = new Tholu\Packer\Packer($Buffer, 'Normal', true, false, true); 
// Nastavíme MIME typ
$presentFile = file_get_contents("minified.js"); //Get Old data then merge with new.
file_put_contents("minified.js", $presentFile.$packer->pack()); //Moved above header then merge.
header("Content-type: text/javascript"); 
// Výstup 
echo $packer->pack(); 



?>

只需将file_put_contents("minified.js", $packer->pack());移到标题上方,即可使用。