2011-01-27 7 views
0

다시. 우선, 나와 함께 견디고, 밤늦거나 피곤해서 간단한 대답 일 것입니다 ...쓰기 파일의 크기 제한

저는 제품에 대한 정보를 하나 하나 수집하고 있습니다. CSV 파일의 한 줄 그러나, 나는 하나의 거대한 CSV 파일을 원하지 않는다. 그래서 나는 파일을 크기별로 나눠 넣으려고한다. 각 신제품이 수집 될 때마다 스크립트는 작성하려고하는 파일이 한계보다 작은 지 여부를 확인해야합니다. 그럴 경우, 그 파일을 계속 작성해야합니다. 그렇지 않으면 새 파일을 작성하고 제품을 새 파일에 추가해야합니다.

는 여기에 내가 curently 파일의 크기를 제한하려고 한 내용은 다음과 같습니다 그러나

$f = 1; 
if(file_exists($shop_path.'items/items'.$f.'.txt')) 
{ 
    if(filesize($shop_path.'items/items'.$f.'.txt') >= 512000) 
    { 
     $f++; 
     $fh = fopen($shop_path.'items/items'.$f.'.txt', "a+"); 
    } 
    else 
    { 
     $fh = fopen($shop_path.'items/items'.$f.'.txt', "a+"); 
    } 
} 
else 
{ 
    $fh = fopen($shop_path.'items/items'.$f.'.txt', "a+"); 
} 

if(fwrite($fh, $prod_str) === TRUE) 
{ 
    echo 'Done!<br />'; 
} 
else 
{ 
    echo 'Could not write to file<br />'; 
} 
fclose($fh); 

, 난 그냥 "파일에 쓸 수 없습니다"오류가 점점 계속. 왜 이런거야?

답변

1

fwrite는 부울 값을 반환하지 않으며 실패 할 때만 false를 반환합니다.

"fwrite()는 쓰여진 바이트 수를 반환하거나 오류시 FALSE를 반환합니다."

체크 아웃 : http://hu2.php.net/manual/en/function.fwrite.php

은 아마 작동합니다

if(fwrite($fh, $prod_str)) 
{ 
    echo 'Done!<br />'; 
} 
else 
{ 
    echo 'Could not write to file<br />'; 
} 

편집 : 더 나은 또는 :

if(fwrite($fh, $prod_str) !== false) 
{ 
    echo 'Done!<br />'; 
} 
else 
{ 
    echo 'Could not write to file<br />'; 
} 
+0

하하! 나는 그것이 어리석은 것을 알았다. 나는 그것을 기억해야한다. 그러나 자주 fwrite() 함수를 사용하지 않는다. 감사! – chaoskreator

1

ftell() 기능은 항상 당신에게 말할 것이다 당신의 현재의 바이트가의 오프셋 (offset) 파일. 각 쓰기 전에이 값을 테스트하고 미리 정의 된 값을 초과하면 해당 파일을 닫고 새 값을 열 수 있습니다.

+0

나는이 기능에 대해 들어 보지 못했지만, 분명히 살펴볼 것입니다. 감사! – chaoskreator