2010-07-16 2 views

답변

0

일반 파일을 다루는 경우 fclose으로 파일을 닫으면 변경 사항이 디스크에 적용됩니다. 로그 메시지가 디스크에 기록되도록하려면 로그에 기록 할 때마다 파일을 열고 닫습니다.

system log에 대한 쓰기 작업은 즉시 수행해야하며 OS에서 처리합니다.

+0

커널이 버퍼를 관리하는 방법에 익숙하지는 않지만 사실입니다. 참고 문헌이있는 경우 제공하십시오. – Artefacto

+0

@Artefacto : 정확합니다. PHP 코드베이스를 살펴본 결과 파일 작업을 처리하는 fsync에 대한 명시 적 호출이 없습니다. @ korkman, PHP 확장은 갈 길이 멀다. – advait

+0

파일 닫기가 반드시 필요한 것은 아닙니다. Ref .: http://www.linux-mtd.infradead.org/doc/ubifs.html#L_writeback – Simon

2

나는 두려워 그것이 가능하지 않습니다. 소스에있는 fsync에 대한 유일한 언급은 일반 파일 시스템 스트림에 대한 flush 작업의 구현에 있으며 단지 fsyncing이 아니라고 명시 적으로 말하면서 fflush 만 호출하면됩니다.

정말 필요한 경우 PHP 확장 프로그램을 사용해야합니다.

+0

유닉스 소켓에서 듣고 임의의 동기화 동작을 수행하는 fsync-deamon에 대해 생각하기 시작했다. 공연자는 아니지만 연장보다 유지 관리가 쉽습니다. – korkman

+0

@korkman 이것에 대한 확장은 만드는 것이 간단합니다. fsync를 호출하도록 기본 플러시 작업을 패치 할 수도 있지만 스크립트가 flush로 호출되고 fsync가 필요하지 않은 다른 장소에서는 성능이 저하 될 수 있습니다. – Artefacto

관련 문제