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

정상 작동 하다가 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>";
 

 

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

회원로그인

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