정상 작동 하다가 PHP7.4로 업데이트 하면서 발생되는 문제

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
정상 작동 하다가 PHP7.4로 업데이트 하면서 발생되는 문제

QA

정상 작동 하다가 PHP7.4로 업데이트 하면서 발생되는 문제

본문


<?
include_once('./_common.php');
$tree_data = '0';
function findUser($wr_id)
{
    global $model;
    global $tree_data;
    $childs = [];
    foreach ($model as $key => $val) {
        if ($val['wr_6'] == $wr_id) {
            $tree_data++;
            $childs[] = $val;
        }
    }
    foreach ($childs as $key => $val) {
        findUser($val['wr_id']);
    }
}

$sql  = "SELECT a.wr_id , a.mb_id , a.wr_6 , a.wr_2 , a.wr_9 , a.wr_10 
        FROM g5_write_plan_a a 
        WHERE a.wr_id = 1";
          
$my_result = sql_query($sql);
$model = array();
$start = microtime(true);
for ($i = 0; $row = sql_fetch_array($my_result); $i++) {
    $model[] = $row;
}
foreach ($model as $key => $val) {
    $tree_data = '0';
    findUser($val['wr_id']);
    $level = '0';
    if ($tree_data < '2') {
        $level = '0';
    }
    if ($tree_data >= '2' and $tree_data <= '5') {
        $level = '1';
    }
    if ($tree_data >= '6' and $tree_data <= '13') {
        $level = '2';
    }
    if ($tree_data >= '14' and $tree_data <= '29') {
        $level = '3';
    }
    if ($tree_data >= '30' and $tree_data <= '61') {
        $level = '4';
    }
    if ($tree_data >= '62' and $tree_data <= '125') {
        $level = '5';
    }
    if ($tree_data >= '126' and $tree_data <= '253') {
        $level = '6';
    }
    if ($tree_data >= '254' and $tree_data <= '509') {
        $level = '7';
    }
    if ($tree_data >= '510' and $tree_data <= '1021') {
        $level = '8';
    }
    if ($tree_data >= '1022' and $tree_data <= '2045') {
        $level = '9';
    }
    if ($tree_data >= '2046' and $tree_data <= '4093') {
        $level = '10';
    }
     echo "tree_data:".$tree_data."<br>";
     echo "level:".$level."<br>";
    $sql = " update g5_write_plan_a set wr_9 = ".$level." where wr_id = ".$val['wr_id'];
    sql_query($sql);
}
$end = microtime(true);
$time = $end - $start;
echo number_format($time, 8) . "<br>";

 

wr_id 기준으로

wr_6필드에 추천처럼 wr_id 값을 가지고 있고 그 wr_id값을 wr_6필드에 또 지정된걸

반복해서 수를 파악하고 레벨을 뿌려주는 소스입니다.

g5_member 테이블에서 추천코드 mb_recommend 랑 비슷하다고 보시면되요

내 추천자가 그 추천자 또 그 추천자 이런식으로 무한반복 수를 뽑아 내는것입니다

 

근데 문제는 이제 잘 되다가

단독서버인데 php7.4.13 으로 재 설치를 하고 나서

에러도 안나오고 ㅠ 정상실행은 되는데 계속 $tree_data 값이 0으로 나옵니다.

데이터는 모두 정상으로 들어가 있습니다. ㅠㅠ

처음부터 안됬음 이해되는데 잘 되던게 php 재설치 후 안되네요 ㅠ

 

고수님들 한번 봐주세요!~

부탁드립니다.

이 질문에 댓글 쓰기 :

답변 2

안녕하세요.

 

1. 상단에 에러코드 출력으로 어떤 에러가 나는지 한번 보시기 바랍니다.

 

error_reporting(E_ALL);
ini_set('display_errors', 1);
 

2. 아래의 코드 참고를 해보시겠어요?

 

function findUser($wr_id, $tree_data)
{
    global $model;
    $childs = [];
    foreach ($model as $key => $val) {
        if ($val['wr_6'] == $wr_id) {
            $tree_data++;
            $childs[] = $val;
        }
    }
    foreach ($childs as $key => $val) {
        $tree_data = findUser($val['wr_id'], $tree_data);
    }
    return $tree_data;
}
 

 

 

 

1번 찍어보니 에러는 안납니다. ㅠ

2번 주신대로 한번 해보니 여기서는 아래와 같이 에러 나네요
Fatal error: Uncaught ArgumentCountError: Too few arguments to function findUser(), 1 passed in level_up.php on line 53 and exactly 2 expected in level_up.php:9 Stack trace: #0 level_up.php(53): findUser('1') #1 {main} thrown in level_up.php on line 9

라인9 >> function findUser($wr_id, $tree_data) 이부분입니다.


<?
include_once('./_common.php');
$tree_data = 0;
function findUser($wr_id)
{
    global $model;
    global $tree_data;
    $childs = [];
    foreach ($model as $key => $val) {
        if ($val['wr_6'] == $wr_id) {
            $tree_data++;
            $childs[] = $val;
        }
    }
    foreach ($childs as $key => $val) {
        findUser($val['wr_id']);
    }
}
$sql  = "SELECT a.wr_id , a.mb_id , a.wr_6 , a.wr_2 , a.wr_9 , a.wr_10 
        FROM g5_write_plan_a a 
        WHERE a.wr_id = 1";
          
$my_result = sql_query($sql);
$model = array();
$start = microtime(true);
for ($i = 0; $row = sql_fetch_array($my_result); $i++) {
    $model[] = $row;
}
foreach ($model as $key => $val) {
    $tree_data = 0;
    findUser($val['wr_id']);
    $level = 0;
    if ($tree_data < 2) {
        $level = 0;
    }
    if ($tree_data >= 2 and $tree_data <= 5) {
        $level = 1;
    }
    if ($tree_data >= 6 and $tree_data <= 13) {
        $level = 2;
    }
    if ($tree_data >= 14 and $tree_data <= 29) {
        $level = 3;
    }
    if ($tree_data >= 30 and $tree_data <= 61) {
        $level = 4;
    }
    if ($tree_data >= 62 and $tree_data <= 125) {
        $level = 5;
    }
    if ($tree_data >= 126 and $tree_data <= 253) {
        $level = 6;
    }
    if ($tree_data >= 254 and $tree_data <= 509) {
        $level = 7;
    }
    if ($tree_data >= 510 and $tree_data <= 1021) {
        $level = 8;
    }
    if ($tree_data >= 1022 and $tree_data <= 2045) {
        $level = 9;
    }
    if ($tree_data >= 2046 and $tree_data <= 4093) {
        $level = 10;
    }
     echo "tree_data:".$tree_data."<br>";
     echo "level:".$level."<br>";
    $sql = " update g5_write_plan_a set wr_9 = ".$level." where wr_id = ".$val['wr_id'];
    sql_query($sql);
}
$end = microtime(true);
$time = $end - $start;
echo number_format($time, 8) . "<br>";
 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 56
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT