>백엔드 개발 >PHP 튜토리얼 >php+redis+mysq는 높은 동시성을 어떻게 처리합니까(예제 코드)

php+redis+mysq는 높은 동시성을 어떻게 처리합니까(예제 코드)

不言
不言원래의
2018-08-06 14:11:432041검색

이 기사의 내용은 php+redis+mysq가 높은 동시성을 처리하는 방법(예제 코드)에 대한 것입니다. 필요한 친구들이 참고할 수 있기를 바랍니다.

1. 실험 환경
ubuntu, php, apache 또는 nginx, mysql
2 요구 사항#🎜 🎜#이제 많은 양의 동시성을 가질 수 있는 인터페이스가 있습니다. 이 인터페이스는 사용자의 GET 요청에서 이름 필드를 수신한 다음 이 필드를 먼저 mysql에 저장하는 것입니다. . Redis 대기열에 넣은 다음 Redis가 정기적으로 데이터를 mysql로 ​​전송하도록 합니다.

2. 구현 단계 1. 새 데이터베이스 테스트 및 데이터 테이블 테스트를 생성합니다. 테이블 생성 문은

CREATE TABLE `test` (
  `name` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf-8
1입니다. /var/www에서 /test에 다음 내용으로 새 index.php를 생성하고 액세스 가능하도록 가상 호스트를 구성합니다.

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
try {
    $res = $redis->LPUSH('name', $_REQUEST["name"]);
} catch (Exception $e) {
    echo $e->getMessage();
}
2. 동일한 디렉토리에 새로운 redis.php 파일을 생성하고, 데이터베이스 비밀번호 및 기타 구성 수정에 주의하세요.

<?php
$redis = new Redis();
$redis->pconnect('127.0.0.1',6379);
$mysql=mysqli_connect("localhost","root","bnm");
mysqli_select_db($mysql,"test") or die("不能选择数据库");
if(!$mysql){
    die("连接失败");
}
while (true){
    try{
        $value = $redis->LPOP('name');
        if(!$value){
            echo "等待";
        }else{
            $sql="insert into test(name) values ('".$value."')";
            $result=mysqli_query($mysql,$sql);
            if($result&&mysqli_affected_rows($mysql)>0){
                echo "插入成功";
            }else{
                echo "插入失败:".mysqli_error($mysql);
            }
        }
    }catch(Exception $e){
        echo $e->getMessage();
    }
    sleep(1);
}
3 redis.php 스크립트 파일

nohup php redis.php &
4를 실행합니다. index.php 스크립트 파일(예: http://192.168.116.128/?name=33)을 방문한 다음 데이터가 있는지 확인합니다. mysql에 입력되었습니다.

추천 관련 기사:

PHP 배열 함수의 작동은 무엇인가요? PHP 배열 기능 적용(코드 포함)

thinkphp5 프레임워크 및 Android에서 QR 코드 생성 코드 구현#🎜 🎜#

위 내용은 php+redis+mysq는 높은 동시성을 어떻게 처리합니까(예제 코드)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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