테스트 사이트 - 개발 중인 베타 버전입니다

php exec 관련 문의드립니다. 채택완료

sir생님 1년 전 조회 4,752

php exec 사용하여 파이썬으로 크롤링을 하여 불러오는데, ajax progress 바처럼 실행되는 동안 로딩 또는 progress를 사용할 수 있을까요?

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
R
1년 전

아래 샘플 참고하세요.

 

1. 파이썬 스크립트에서 진행률 업데이트 출력 파이썬 스크립트에서 `print()` 함수를 사용하여 진행률 업데이트를 출력하세요. 예를 들어, 다음과 같이 할 수 있습니다.

</p>

<p># 파이썬 스크립트</p>

<p>import time</p>

<p> </p>

<p># 진행률 업데이트 출력</p>

<p>for i in range(100):</p>

<p>    print(i)</p>

<p>    time.sleep(0.1)</p>

<p>

 

2. PHP에서 진행률 업데이트 읽기 PHP에서 `exec()` 함수를 사용하여 파이썬 스크립트를 실행하고 진행률 업데이트를 읽으세요. 예를 들어, 다음과 같이 할 수 있습니다.

</p>

<p><?php</p>

<p>// 파이썬 스크립트 실행</p>

<p>$output = exec('python script.py');</p>

<p> </p>

<p>// 진행률 업데이트 출력</p>

<p>echo $output;</p>

<p>?></p>

<p>

 

3. 프런트엔드에서 진행률 표시 PHP에서 출력된 진행률 업데이트를 프런트엔드(예: JavaScript)로 전달하여 진행률 표시줄이나 로딩 애니메이션을 업데이트하세요. 예를 들어, 다음과 같은 JavaScript 코드를 사용할 수 있습니다.

</p>

<p>// PHP에서 출력된 진행률 업데이트 수신</p>

<p>var progress = <?php echo $output; ?>;</p>

<p> </p>

<p>// 진행률 표시줄 업데이트</p>

<p>var progressBar = document.getElementById('progress-bar');</p>

<p>progressBar.value = progress;</p>

<p>

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

s
sir생님
1년 전
감사합니다! 도움 많이되었어요 ㅎㅎ

댓글을 작성하려면 로그인이 필요합니다.

1년 전

아래의 코드가 도움이 도실지요...

 

1. PHP에서 exec() 사용

 

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // exec 명령어로 파이썬 스크립트 실행
    $command = 'python3 your_script.py';
    exec($command . ' > output.txt &'); // 결과를 output.txt 파일로 저장
    echo json_encode(['status' => 'running']);
}
?>

 

 

2. AJAX로 요청 보내기

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Progress Bar</title>
    <style>
        #progress {
            width: 0;
            height: 20px;
            background-color: green;
        }
        #progress-container {
            width: 100%;
            background-color: lightgray;
        }
    </style>
</head>
<body>

<button id="start">크롤링 시작</button>
<div id="progress-container">
    <div id="progress"></div>
</div>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
    $(document).ready(function () {
        $('#start').click(function () {
            $('#progress').css('width', '0');
            // AJAX 요청
            $.ajax({
                url: 'your_php_script.php',
                method: 'POST',
                beforeSend: function () {
                    // 여기서 로딩 상태 표시 가능
                    $('#progress').css('width', '100%');
                },
                success: function (response) {
                    // 프로그레스 바 종료
                    $('#progress').css('width', '100%');
                    alert('크롤링이 완료되었습니다!');
                }
            });
        });
    });
</script>

</body>
</html>

 

 

 

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인