>백엔드 개발 >PHP 튜토리얼 >쇼핑에서 높은 동시성 플래시 세일을 달성하는 PHP 방법

쇼핑에서 높은 동시성 플래시 세일을 달성하는 PHP 방법

不言
不言원래의
2018-08-18 17:58:445547검색

본 글의 내용은 PHP로 쇼핑 시 높은 동시성 플래시 세일을 실현하는 방법에 대한 내용으로, 도움이 필요한 친구들에게 참고가 되었으면 좋겠습니다.

빠른 판매, 기차표 잡기 등에서 우리는 일반적으로 높은 동시성 문제에 직면합니다. 아래에서는 네 가지 솔루션을 제공합니다.

$fp = fopen("order.lock", "r");
if(flock($fp,LOCK_EX)){
    //..处理订单的代码
    flock($fp,LOCK_UN);
}
fclose($fp);

2 . 메시지 대기열을 사용하세요

우리는 Memcacheq과 Radis를 자주 사용합니다.

예: 사용자가 확보할 수 있는 티켓이 100개 있는 경우 이 100개의 티켓은 캐시에 배치될 수 있으며 읽고 쓸 때 잠기지 않습니다. 동시성이 큰 경우 약 500명 정도가 티켓을 성공적으로 획득할 수 있기 때문에 500명 이후의 요청은 이벤트 종료 시 정적 페이지로 직접 전송될 수 있습니다. 500명 중 400명이 물품을 구하는 것은 불가능하다. 따라서 대기열에 입장한 순서에 따라 선착순 100명만 구매에 성공하실 수 있습니다. 다음 400명은 이벤트 종료 페이지로 바로 이동됩니다. 물론 500명을 입력하는 것은 예시일 뿐이며, 숫자를 직접 조정할 수도 있습니다. 활동 종료 페이지는 데이터베이스가 아닌 정적 페이지를 사용해야 합니다. 이렇게 하면 데이터베이스에 대한 부담이 줄어듭니다.分3, 분산형 클러스터 서버인 경우 하나 이상의 대기열 서버가 필요합니다.

Xiaomi와 Taobao의 스냅업은 여전히 ​​약간 다릅니다. 주문하고 결제할 수 있습니다. 반면에 Taobao는 결제 중 필터링에 중점을 두고 있으며, 예를 들어 10개의 항목을 판매하려는 경우 10명 이상의 사용자가 결제 중에 동시에 필터링을 수행하도록 합니다. , 동시성 양을 계층별로 항목 수를 줄입니다. 44.

결제 진입시 먼저 add(product_lock_key, “1″)를 memcached에 저장해 주시고, 반품이 성공하시면 결제 진입하세요. 실패하면 누군가 이미 결제 프로세스에 진입했다는 의미이며, 스레드는 N초 동안 대기한 후 재귀적으로 추가 작업을 수행합니다.

관련 권장 사항: 파일을 내보낼 때 phpExcel 메모리 오버플로에 대한 솔루션
PHP는 QR 코드(코드)의 생성 및 식별을 어떻게 인식합니까?

PHP가 Redis를 작동하는 일반적인 방법은 무엇입니까? PHP에서 Redis를 작동하는 방법 요약(코드 포함)

위 내용은 쇼핑에서 높은 동시성 플래시 세일을 달성하는 PHP 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.