2013-03-22 2 views
1

나는 Heroku에 배치 된 Facebook 용 응용 프로그램을 가지고 있습니다. 이 응용 프로그램은 누군가가 양식을 완성 할 때 일부 사용자 데이터를 CSV로 수집합니다. 그러나이 CSV에 문제가 있습니다. 매일 완전히 지워집니다 (헤더 만 남아 있습니다).Heroku CSV가 1 일 후에 지워지면 모든 데이터가 손실됩니다.

I 의지하는 내가 CSV 조작하고있어 PHP 코드 제공 : 여기

<?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를 조작있어 코드입니다 나는이 응용 프로그램에게 Heroku에서 호스팅되고 난 월요일 이후에 데이터를 밀어하지 않았다 언급

<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> 

다음 CSV를 다운로드 할 수있는 관리자 페이지에 대한 코드입니다. 내 마지막 기록은 마지막 푸시가 월요일 13시 21 분에 있었음을 나타냅니다. 그러나 나는 CSV로만 데이터를 볼 수 있습니다. 다른 날에도 체크인했고 다른 입력이있었습니다.

어째서 이런 일이 발생 했습니까? Heroku 또는 PHP 코드에 문제가 있습니까?

미리 감사드립니다.

+0

대신 데이터베이스에 데이터를 저장해야하는 것처럼 들립니다. –

+0

데이터베이스에 데이터를 저장하는 것은 영웅 또는 최소한 내 지불 방법을 확인하기 위해 약간의 비용이 들지만 동의하지 않습니다. CSV에 글쓰기가 잘못 되었습니까? – bandrei2408

+1

나는 Heroku의 데이터가 일시적이라고 생각합니다. 네트워크를 확장하는 방법입니다. 앱은 잠재적으로 수십 또는 수백 대의 컴퓨터에 프로비저닝되어 필요에 따라 다시 프로비저닝하거나 이동할 수 있습니다. 당신은 * 하나의 기계를 소유하고 있지 않습니다. –

답변

1

Heroku는 네트워크 내에서 잠재적으로 수십 또는 수백 대의 서버에서 코드를 동기화하여 확장합니다. 요청을 처리하는 가상 머신이 매번 다를 수 있으므로 나중에 개별 인스턴스에 저장된 일시적인 데이터를 사용할 수 없습니다. 작동 방식에 대해 좀 더 자세히 읽을 수 있습니다. here.

이상적으로이 작업을 위해 장기간 보관을 위해 만들어진 저장 장치를 사용해야합니다. 나는 MongoHQ을 약간 사용했고 꽤 잘 작동합니다 (그들은 무료 티어를 가지고 있습니다). Amazon SimpleDB과 같은 키/값 저장소가 적합 할 수도 있습니다.

1

파일 시스템에 쓸 수 있지만 확장 다이 노스에서 손실되고 dynos가 다시 시작되고 코드가 다시 배포됩니다. Dynos는 헤로 쿠에 의해 매일 순환되므로 손실의 원인이됩니다.

+0

답변 해 주셔서 감사합니다! 누군가 나에 대해 이미 설명했습니다. 지금은 의미가 있습니다. 저는 그들의 문서를주의 깊게 읽지 않았습니다. – bandrei2408

관련 문제