2014-12-01 2 views
2

상당한 오버 헤드는 다음과 같은 기능을 반복 호출을 만드는 (CPU, 메모리 및/또는 IO)이 있습니까 : all PHP implementation of generating a UUID (V4)를 사용하여 대PHP에서 UUID를 생성하는 가장 효율적인 방법은 무엇입니까?

public function getUuid() 
{ 
    return `uuidgen -r`; # -r = version 4 
} 

? 중요한 경우 프로젝트는 Apache (Prefork MPM) 2.2.22PHP 5.3.10 (APC)을 사용합니다.

필자의 초기 감정은 PHP 대신 C 라이브러리에서 UUID 생성의 이점이 시스템 호출 오버 헤드를 보충하는 것보다 더 많을 것이라고 생각합니다. 또한 uuidgenutil-linux 패키지의 일부로, UUID를 올바르게 생성하기 위해 PHP 라이브러리 이상을 본질적으로 신뢰하지만, 몇 가지 추가 정보를 얻고 싶습니다.

+0

다음을 사용할 수 없습니다. http://php.net/manual/en/function.uniqid.php –

+0

@dagon 우리는 PHP가 아닌 일부 시스템과 통합되어 있으므로 동일한 스타일의 식별자를 생성 할 수 있습니다. 모든 시스템이 중요합니다. – InvertedAcceleration

+2

나는 이것을 닫은 사람들이 생각하고 있는지 궁금해. 이것은 분명히 수퍼 유저의 주제가 아닌 프로그래밍 질문입니다. – ofrommel

답변

1

문제를 프로필로 제안하는 것이 좋습니다. shell_exec() PHP 함수도 쉘을 생성하므로 생각만큼 저렴하지 않을 수 있습니다. 그러나 언급 한 PHP 클래스는 하위 프로세스를 호출하는 것으로 보입니다. 나는 (OS X에서) 몇 가지 테스트를했고 약 1 분 안에 PHP 클래스로 10.000 UUID를 생성 할 수 있었고 shell_exec('uuidgen')으로 40 초에 반대했다.

PHP 클래스는 shell_exec() 외에도 ifconfig을 호출하는 것으로 보이므로 약간 큰 오버 헤드가 발생할 수 있습니다.

또한 결과는 선택한 해시 알고리즘에 따라 다를 수 있습니다.