Php 如何在编辑过程中编辑一个实时网页而不给网页访问者造成混乱?
请原谅,如果这些非常基本的问题已经被问了很多次,回答了很多次,但是几个小时的搜索没有发现任何相关的问题 1在网页上线后,Stackoverflow开发人员希望对页面进行一些更改,但不希望这些更改上线,直到他完成了一个基本SDLC的原型设计和测试周期。他是如何做到这一点的网站是活的 2对这个问题的更基本的重新表述:当我花30分钟对一个现有的、实时的网页进行更新时,在这段时间内访问该网页的任何人似乎都会实时观察到我所做的每一个增量更改,包括无意中的错误、打字错误等。我肯定错过了一些很明显的东西,所以请原谅我!我如何在编辑过程中对当前活动的网页进行更改而不造成混乱Php 如何在编辑过程中编辑一个实时网页而不给网页访问者造成混乱?,php,html,Php,Html,请原谅,如果这些非常基本的问题已经被问了很多次,回答了很多次,但是几个小时的搜索没有发现任何相关的问题 1在网页上线后,Stackoverflow开发人员希望对页面进行一些更改,但不希望这些更改上线,直到他完成了一个基本SDLC的原型设计和测试周期。他是如何做到这一点的网站是活的 2对这个问题的更基本的重新表述:当我花30分钟对一个现有的、实时的网页进行更新时,在这段时间内访问该网页的任何人似乎都会实时观察到我所做的每一个增量更改,包括无意中的错误、打字错误等。我肯定错过了一些很明显的东西,所以
非常感谢 在我的评论之后,下面是一个简单的缓存页面脚本,它使用define命令允许页面在缓存模式或动态模式下运行。将CACHESITE切换为false以将其返回到页面的实时呈现。如果您是管理员或您决定的其他触发器,则需要将其展开以绕过缓存,以便您可以看到所做的更改,但用户可以看到缓存页面:
<?php
// If true, cache this page
define("CACHESITE",true);
function CachePage($content = '',$saveto = 'index.php')
{
ob_start();
echo $content;
$data = ob_get_contents();
ob_end_clean();
if(CACHESITE) {
// If you have a define for site root, use instead
$dir = $_SERVER['DOCUMENT_ROOT'].'/temp/';
if(is_file($cached = $dir.$saveto)) {
include($cached);
return;
}
if(!is_dir($dir))
mkdir($dir,0755,true);
$cfile = fopen($cached,'a');
fwrite($cfile,$data);
fclose($cfile);
}
return $data;
}
// Whatever your content is, it needs to be in a string
// Use output buffering if you have include pages
$test = 'test is the best'.rand();
echo CachePage($test,'thispage.php');
?>
无论如何,有很多方法可以做到这一点,但是缓存工作得相对较好。我看到了太多不好的评论和一个不好的答案。你从不在直播页面上工作。如果你把它弄坏了怎么办?你问这个问题的事实告诉我,你不够好,不能不犯错误 在我看来,只有一个好方法可以做到这一点
创建一个子域dev.whatever.com并将您当前的live站点放在那里。当你对这个结果感到满意时,开始你的本地项目,然后将它移动到你的开发站点以确保没有问题,首先在那里做所有的事情,然后当你感到满意时,你就开始生活。为什么不用不同的文件名保存一份页面副本呢。上传并完成,直到你想要的效果。除了您之外,没有人知道该页面存在,因此没有人会看到任何问题。一旦你对它感到满意,就使用这些页面代码。为你的网站提供一个测试和实时版本。几乎所有的设置在测试时都有相同的显示错误,而不是在现场。你知道,维护模式可能会有所帮助;只有开发人员才能在维护模式下查看页面。@chris85我认为这将更难和更混乱,所有页面都有两份副本。@EmreY当然!是的,但我们希望这样做,不需要维护就可以更改。我只是想征求专业人士的意见,比如你的意见:我不明白上线与开发服务器有什么关系?我知道你的问题是关于在不引起访问者问题的情况下更改实时网站上页面的代码,但我不明白为什么你很难在开发本地服务器上进行这些更改,请检查它们,调试它们并最终在一眨眼之间将最终版本上传到实时服务器上?无论好坏,OP表示他们对复制他们的网站不感兴趣。很明显,预览/实时站点场景是一种可行的方法,我的错误答案是我能想到的最接近的场景,它不包括预览/实时版本。此外,有多种web应用程序使用一个系统,您不需要开发服务器/子域来进行简单的打字更改或布局更改。正如其他海报所提到的,在Wordpress、Magento等web应用程序中可以找到一种维护模式,它使用缓存和数据库保持页面处于静态状态,直到刷新缓存或将页面移动到实时模式。在实时环境中更新/创建代码,当然,这不是最好的计划,但是页面布局和文本更改几乎不需要开发环境才能成为成功的编辑环境。感谢您的努力,但我没有要求代码:只是想法足够:没问题,我只是提供了一个关于缓存页面的示例。它可能对你正在尝试做的事情有效,也可能无效,但我个人一直使用这种方法使用缓存来进行html修订等。我们有很多访问者,当我们上传新文件的同时,有人会试图加载页面,但bamm会崩溃:我们不想遇到这样的问题。我想你不明白我在说什么。没有人会加载该页面,因为它没有从您的站点链接到,所以除了您之外,没有人知道它在那里。