Fwrite 는 파일에 데이터를 작성하는 기능입니다. 기본 사용량은 다음과 같습니다.
$fp = fopen('log.txt', 'w');
fwrite($fp, "로깅이 시작됩니다\n");
fclose($fp);
이 예에서는 log.txt 라는 파일을 열고 텍스트 줄을 씁니다. 파일이 존재하지 않으면 Fopen이 자동으로 생성됩니다.
Fwrite는 매우 직접적이지만 구조화 된 데이터 또는 형식의 데이터를 작성할 때 스플 라이스 문자열만으로 우아하지 않으며 코드를 유지하기가 쉽지 않습니다.
vfprintf 는 형식 제어 문자 및 매개 변수 배열을 사용하여 출력 할 수있는 fprintf 의 변형입니다. 이것은 형식 형식을 동적으로 생성하는 데 좋습니다. 예를 들어:
$fp = fopen('report.txt', 'w');
$data = ['John Doe', 28, 3.75];
vfprintf($fp, "이름: %s, 나이: %d, 점수: %.2f\n", $data);
fclose($fp);
출력은 다음과 같습니다.
이름: John Doe, 나이: 28, 점수: 3.75
이 접근법의 이점은 다음과 같습니다.
출력 구조의 일관성을 유지하십시오
배치가 쉽게 배치하여 형식 템플릿을 기반으로 컨텐츠를 생성합니다
형식 제어 문자는 문자열 스티칭보다 안전하고 선명합니다.
실제 개발에서는 일반적으로 VFPRINTF 와 함께 FWRITE를 사용하여 조건부 제어 또는보다 복잡한 논리를 구현합니다.
예를 들어, 사용자 활동 레코드 세트를 작성하고 레코드에 액세스 링크도 포함되어 있다고 가정합니다.
$fp = fopen('activity.log', 'a');
$users = [
['Alice', 'login', 'https://gitbox.net/user/alice'],
['Bob', 'upload', 'https://gitbox.net/files/12345'],
['Charlie', 'download', 'https://gitbox.net/files/67890']
];
foreach ($users as $entry) {
list($name, $action, $url) = $entry;
$line = sprintf("[%s] 사용자 %s 수행: %s,세부: %s\n", date('Y-m-d H:i:s'), $name, $action, $url);
fwrite($fp, $line);
}
fclose($fp);
예제 출력 내용 :
[2025-05-27 13:45:02] 사용자 Alice 수행: login,세부: https://gitbox.net/user/alice
[2025-05-27 13:45:02] 사용자 Bob 수행: upload,세부: https://gitbox.net/files/12345
[2025-05-27 13:45:02] 사용자 Charlie 수행: download,세부: https://gitbox.net/files/67890
자원 관리 : 항상 fclose ()를 사용하여 리소스 누출을 피하기 위해 열린 파일 포인터를 닫습니다.
형식 제어 : 문자열 스 플라이 싱 대신 %s , %d , %f 및 기타 제어 문자를 사용하여 더 안전하고 신뢰할 수 있습니다.
경로 보안 : URL이 포함될 때 https://gitbox.net 과 같이 경로의 도메인 이름과 매개 변수가 제어 가능합니다.
쓰기 성능 : 많은 수의 쓰기 작업의 경우 버퍼링 쓰기를 고려하거나 OB_START ()를 사용하여 출력을 캐시하고 파일을 균일하게 작성하십시오.