찾다

 >  Q&A  >  본문

스레드로부터 안전한 PHP와 스레드로부터 안전하지 않은 PHP 중에서 선택: 올바른 결정을 내리는 방법은 무엇입니까?

Windows 10에서 Laravel 9.x 애플리케이션을 개발 중입니다. 내 현재 PHP 버전은 PHP 8.1.5 (cli) (build: Apr 12 2022 17:38:57) (ZTS Visual C++ 2019 x64) 입니다. 이 버전은 스레드로부터 안전한 버전인가요, 아니면 스레드로부터 안전하지 않은 버전인가요? 내가 어떻게 알아? 스레드로부터 안전하지 않은 버전 대신 스레드로부터 안전한 버전을 선택해야 하는 경우는 언제입니까?

StackOverflow에서 이 질문을 조사해 보았지만 제가 본 질문/답변은 10년 이상 된 것 같았습니다. 즉, 이와 같은 것이었습니다. 오늘 이 질문을 하면 아마도 다른 대답을 얻게 될 것이라고 강력히 의심합니다. 지난 몇 년 동안 기술이 변했기 때문입니다. 이것이 합리적인 가정인가? (적어도 현재 PHP 버전은 VC6이나 VC9가 아닌 최신 컴파일러 VC++ 2019를 사용하는 것 같습니다.)

아직 내 프로덕션 환경이 어떻게 될지, 내가 개발 중인 앱이 프로덕션에 적용되는지 여부는 아직 모릅니다. 왜냐하면 Laravel을 (재)배우기 위해 작성하는 앱일 뿐이기 때문입니다. 아마도 어느 시점에 Laravel 앱의 데모로 이를 프로덕션에 적용할 것입니다. 하지만 호스팅 서비스, Netlify 또는 다른 서비스에 포함될지는 아직 모르겠습니다.

몇 가지 배경 지식을 제공하자면, 이 질문은 Laravel 소스 코드를 단계별로 실행하여 문제를 디버깅하는 방법을 배우려고 했기 때문에 나온 것입니다. 이를 위해서는 분명히 XAMPP에 XDebug를 추가해야 했습니다. XDebug 설치에 대해 찾은 지침은 여기를 가리키며 내 PHP 버전에 대한 Windows 바이너리를 다운로드할 것을 제안했습니다. 8.1.5에는 바이너리가 없으므로 8.1용 바이너리 중 하나가 작동하는지, 아니면 8.1 스레드 안전 또는 8.1 비스레드 안전을 사용하는 것이 더 나은지 알 수 없습니다. 내 PHP를 먼저 8.2로 업그레이드하면 더 좋을 것입니다. 스레드로부터 안전한지 또는 스레드로부터 안전하지 않은 것이 더 나은 선택인지는 아직 알 수 없습니다.

누군가 이 문제에 대해 말해 줄 수 있나요?

P粉350036783P粉350036783370일 전641

모든 응답(1)나는 대답할 것이다

  • P粉033429162

    P粉0334291622023-12-24 15:46:59

    이 버전은 스레드로부터 안전한 버전인가요, 아니면 스레드로부터 안전하지 않은 버전인가요? 내가 어떻게 알아?

    이전 phpinfo() 函数并查找Thread Safety 열을 사용할 수 있습니다.

    PATH 환경에 PHP가 설정되어 있으면 빠른 명령을 사용하여 CLI를 통해 PHP를 얻을 수도 있습니다. php -i | grep 线程

    스레드 안전이 아닌 버전 대신 스레드 안전 버전을 선택해야 하는 경우는 언제인가요?

    PHP 공식 문서

    에 따르면

    제 제작 환경이 어떤 모습일지 아직 모르겠어요...

    일반적으로 TS나 NTS 코드 실행에는 차이가 없습니다. 더 웹 서버 지향적입니다.

    제 기억이 맞다면 XAMPP는 기본적으로 Apache Handler를 사용하므로 아마도 스레드로부터 안전한 빌드일 것입니다. 예, PHP8.1용 Xdebug 바이너리는 잘 작동합니다.

    기술적으로 NTS는 스레드 안전성을 고려할 필요가 없으므로 약간 더 빠릅니다.

    개인적으로 웹서버를 만지는 데 더 많은 시간을 할애하고 싶지 않다면, 아직 개발 단계이기 때문에 FastCGI나 PHP-FPM으로 전환하는 것이 아니라면, 기본 설정을 고수하고 집중하는 것이 중요하다고 생각합니다. 완료하는 것이 더 효율적입니다.

    회신하다
    0
  • 취소회신하다