update 나눠서 하는 방법 채택완료
</p>
<p><?
include_once('./_common.php');</p>
<p>error_reporting(E_ALL);
ini_set('display_errors', 1);</p>
<p>$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) {
if ($val['wr_id'] == 1) {
$result[] = $val;
}
findUser($val['wr_id']);
}
}</p>
<p>$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";
$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) {
//if ($key == 1) {
$tree_data = 0;
//echo $val['wr_id'] . "
";
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';
}
if ($tree_data >= '4094' and $tree_data <= '8189') {
$level = '11';
}
if ($tree_data >= '8190' and $tree_data <= '16381') {
$level = '12';
}
if ($tree_data >= '16382' and $tree_data <= '32765') {
$level = '13';
}
if ($tree_data >= '32766' and $tree_data <= '65533') {
$level = '14';
}
if ($tree_data >= '65534' and $tree_data <= '131069') {
$level = '15';
}
if ($tree_data >= '131070' and $tree_data <= '262141') {
$level = '16';
}
if ($tree_data >= '262142' and $tree_data <= '524285') {
$level = '17';
}
if ($tree_data >= '524286' and $tree_data <= '1048573') {
$level = '18';
}
if ($tree_data >= '1048574' and $tree_data <= '2097149') {
$level = '19';
}
if ($tree_data >= '2097150' and $tree_data <= '4194301') {
$level = '20';
}
echo $val['wr_id'] . "
";
echo "tree_data:".$tree_data."
";
echo "level:".$level."
";
$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) . "
";</p>
<p>
처음질문내용
https://sir.kr/qa/520248?page=1&unanswered=0&unadopted=0&adopted=0
약 7만개가 넘다 보니 sql에 안들어간다고 답변을 주셨습니다. ㅠ
이거 1만개씩 나눠서 하려면 어떻게 하는게 좋을가요?
ㅠㅠ
답변 4개
php 화일문 안에 sleep() 등을 이용해서 만개마다 잠시 대기를 걸어 두고 돌리거나
자바스크립트 setTimeout등으로 업데이트 페이지를 AJax로 불러오는데 그곳에서는 만개씩 불러오게 하는 것도 방법입니다
만개 끝나면 1초 정도 휴지 시간을 준 다음 다음 만개 불러오고 다 끝나면 1초 쉬고 다음것 만개 불러오고...
댓글을 작성하려면 로그인이 필요합니다.
set_time_limit(0);
일단 이것 부터 시도해보시길.
<?
include_once('./_common.php');
</code>set_time_limit(0); // 추가<code>
error_reporting(E_ALL);
ini_set('display_errors', 1);
$tree_data = 0;
function findUser($wr_id)
{ 이하생략...
댓글을 작성하려면 로그인이 필요합니다.
댓글을 작성하려면 로그인이 필요합니다.
안녕하세요.
다양한 방법이 있겠지만 아래의 코드도 한번 참고를 해보시겠어요~
// 레코드 개수와 현재 페이지 $limit = 10000; $page = 0;
while (true) { $offset = $limit * $page; $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 LIMIT $limit OFFSET $offset"; $my_result = sql_query($sql);
// 더 이상 처리할 레코드가 없으면 반복 종료 if (sql_num_rows($my_result) == 0) { break; }
$model = array(); while ($row = sql_fetch_array($my_result)) { $model[] = $row; }
// ... 기존 코드 (레코드 처리)
// 페이지 증가 $page++; }
// ... 기존 코드 ?>
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
버그 없이 잘 되는데 문제는 1만개만 들어가네요 ㅠ
7만개에 따라 1번 이 15레벨이면 1만개만 들어가다보니 1번이 레벨이 10으로 바뀌네요!
1만개만 인식해서 레벨 뿌려지는거 같아용 ㅠ 1번이라면 7만개 기준으로 레벨이 나와야 되거든요 ㅠ