Heroku CSV在1天后被擦除,所有数据都丢失了。

时间:2013-03-22 20:46:06

标签: php html facebook csv heroku

我有一个部署在Heroku上的Facebook应用程序。当某人完成表单时,此应用程序会将一些用户数据收集到CSV中。但是,我有这个CSV的问题。它每天都被完全擦除(只剩下标题)。

我将提供我正在操作CSV的PHP代码:

以下是我实际操作CSV并将数据写入其中的代码:

<?php
date_default_timezone_set('Europe/Bucharest');
$error = 0;
if($_GET["name"] == ""){
    $error = 2;
}
else if($_GET["email"] == ""){
    $error = 3;
}
else if(!filter_var($_GET["email"], FILTER_VALIDATE_EMAIL)){
    $error = 4;
}
if($error == 0){
$list = array($_GET["name"], $_GET["email"],date("d-m-Y H:i:s",time()));
$fp = fopen('users.csv', 'a');
fputcsv($fp, $list);
fclose($fp);
}
header( 'Location: index.php?signedrequest='.$_GET["signedrequest"].'&errors='.$error );

?> 

以下是下载CSV的管理页面的代码:

<div id="admintab">
<p>
<iframe name="myframe_targ" style="display:none;"></iframe>
Download : <a href="users.csv" target="myframe_targ">users.csv</a>
</p>
</div>

我提到这个应用程序是在Heroku上托管的,我从周一开始就没有向它推送任何数据。我的上一次日志显示最后一次推文是星期一13:21。但是我只能从今天开始以CSV格式查看数据。我也在其他日子检查,还有其他投入。

你有什么想法,为什么会这样? Heroku或我的PHP代码有问题吗?

提前致谢!!

2 个答案:

答案 0 :(得分:1)

虽然您可以写入文件系统,但在缩放dynos,重新启动dynos,重新部署代码时会丢失。 Heroku每天都会使用Dynos循环,因此这将是您失败的原因。

答案 1 :(得分:1)

Heroku通过在网络中可能数十或数百台服务器上同步您的代码来扩展。您不能依赖存储在单个实例上的瞬态数据以后可用,因为处理请求的虚拟机每次都可能不同。您可以阅读更多有关其工作原理here

理想情况下,您应该使用为此任务长期存储而构建的存储机制。我有点使用MongoHQ,它运行得很好(它们有一个免费的层)。键/值存储(例如Amazon SimpleDB)也可能是合适的。