1

Тема: Як оптимізувати цей PHP-скрипт?

Я робив скрипт(дуже багато з вк апі), але він віддає 504, а всі його можливості мені ДУЖЕ треба, підкажіть Будь-ласка, як його оптимізувати?
посилання з paste-bin

Або в тезі code

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta charset="UTF-8">
    </head>
    <body>
        <center>
            <?php
            $con = mysqli_connect('localhost','kovdos_vesti','vesti999','kovdos_vesti');
 
            mysqli_set_charset($con,"utf8");
 
            @header('Content-Type: text/html; charset=utf-8');
 
            $query = mysqli_query($con,'select * from `setting`');
            $row = mysqli_fetch_array($query);
 
            $group = $row['group'];
 
            $post_max_number = $row['post_max_number'];
            $comment_max_number = $row['comment_max_number'];
 
           
            $data = file_get_contents("https://api.vk.com/method/wall.get?domain=$group&count=$post_max_number");
            $json_data = json_decode($data, true);
 
 
            foreach ($json_data['response'] as $key => $value) {
                global $con;
                if (isset($value['attachment']) && $value['attachment']['type'] === 'photo') {
 
                    $from_id = urlencode($value['from_id']);
 
                    $post_id = urlencode($value['id']);
 
 
                    $text = $value['text'];
 
                    $img = $value['attachment']['photo']['src_big'];
 
                    $date = date("y-m-d", $value['date']);
 
                    $year = date("Y");
                    $month = date("M", $date);
                    $day = date("d");
 
 
                    if (!file_exists("content/{$year}/{$month}/{$day}/posts_image")) {
                        mkdir("content/{$year}/{$month}/{$day}/posts_image", 0777, true);
                    }
 
 
                    copy($img,"content/{$year}/{$month}/{$day}/posts_image/$post_id.jpg");
 
                    $insert = "insert into `posts` (post_id,post_id2,post_text,post_author,post_image,post_date) values (null,'$post_id','$text','admin','$post_id.jpg','$date')";
                    $run_insert = mysqli_query($con,$insert);
                    if($run_insert){
                        echo"<b style='color:green;'>yes {$post_id}</b><br>";
                    }
                    else{
                        echo"<b style='color:red;'>no</b><br>";
                    }
 
                    $getComments = file_get_contents("https://api.vk.com/method/wall.getComments?post_id=$post_id&owner_id=$from_id&count=$comment_max_number");
 
                    $json_Comments = json_decode($getComments,true);
 
                    foreach ($json_Comments['response'] as $key => $value) {
 
                        $text_com = $value['text'];
                        $user_id = $value['uid'];
 
                        $url3 = file_get_contents("https://api.vk.com/method/users.get?user_ids=$user_id&fields=photo_200");
 
                        $json_data3 = json_decode($url3,true);
 
 
                        foreach ($json_data3['response'] as $key => $value2) {
                            $name = $value2['first_name'];
                            $image_src = $value2['photo_200'];
                            $date = date ("y-m-d", $value['date']);
                        }
 
                        if (!file_exists("content/{$year}/{$month}/{$day}/photo_comments")) {
                            mkdir("content/{$year}/{$month}/{$day}/photo_comments", 0777, true);
                        }
 
                        copy($img,"content/{$year}/{$month}/{$day}/photo_comments/$name.jpg");
 
                        $insert = "insert into `comments` (com_id,post_id,com_text,com_author,user_image,post_date) values (null,'$post_id','$text_com','$name','$name.jpg','$date')";
                        $run_insert = mysqli_query($con,$insert);
                        if($run_insert){
                            echo"<b style='color:green;'>yes, comment {$post_id}</b><br>";
                        }
                        else{
                            echo"<b style='color:red;'>No, comment</b><br>";
                        }
                    }
                }
            }
            ?>
        </center>
    </body>
</html>

Програмуй! або запрограмують тебе!
...

2

Re: Як оптимізувати цей PHP-скрипт?

Подивитсь в сніхвері чи знежучувачі якомусь що пішло не так.

Говорила баба діду: «Я поїду к Білодіду, Ізучу двомовну мову І вернусь обратно знову». А дід бабі: «Не *изди, К Білодіду нєт їзди, — Туди не ходять поїзди»
Подякували: ostap34PHP, 221VOLT2

3

Re: Як оптимізувати цей PHP-скрипт?

0xDADA11C7 написав:

Подивитсь в сніхвері чи знежучувачі якомусь що пішло не так.

Я думав може є якась бібліотека для роботи з вк апі, яка б знизила трафік цього скрипта?

Програмуй! або запрограмують тебе!
...

4

Re: Як оптимізувати цей PHP-скрипт?

ost.bregin2014 написав:
0xDADA11C7 написав:

Подивитсь в сніхвері чи знежучувачі якомусь що пішло не так.

Я думав може є якась бібліотека для роботи з вк апі, яка б знизила трафік цього скрипта?

Можеш почитати є щось таке https://vk.com/dev/execute

Програміст - це не професія.
Це образ мислення.
Подякували: 221VOLT, ostap34PHP, DOP3

5

Re: Як оптимізувати цей PHP-скрипт?

Як вас ще не закопали на цьому форумі за такий стиль кодінгу)

http://php.net/manual/en/function.set-time-limit.php
От таке на початку поставте.

Подякували: 221VOLT, ostap34PHP2

6

Re: Як оптимізувати цей PHP-скрипт?

Vo_Vik написав:

Як вас ще не закопали на цьому форумі за такий стиль кодінгу)

http://php.net/manual/en/function.set-time-limit.php
От таке на початку поставте.

та уже цілком непогано, залишилось по функціям рознести, щоб читабельніше та юзабельніше було -- і супер!
(у порівнянні з тим що було раніше)

Прихований текст
не звертайте на мене уваги, я можу нести дурниці, особливо зважаючи на вчорашній струс мізків ...
https://blog.clever-games.win/
Це ще не кінець. Це навіть не початок кінця. Але, можливо, це кінець початку.
Зростання мудрості можна точно вимірювати ступенем зменшення злоби.
///// у творчій відпустці. не турбувати /////
Подякували: ostap34PHP1

7

Re: Як оптимізувати цей PHP-скрипт?

1. curl замість get_file_content.
2. Прибрати з циклу звернення до бази
3. Прибрати з циклу запити до API, упевнений, якимось чином можна відправляти запит на кілька об'єктів одночасно.

Я думав може є якась бібліотека для роботи з вк апі, яка б знизила трафік цього скрипта?

Є. Наприклад таке: https://github.com/getjump/VkApiPHP

Подякували: ostap34PHP, 221VOLT2

8

Re: Як оптимізувати цей PHP-скрипт?

Sensetivity написав:

1. curl замість get_file_content.
2. Прибрати з циклу звернення до бази
3. Прибрати з циклу запити до API, упевнений, якимось чином можна відправляти запит на кілька об'єктів одночасно.

Я думав може є якась бібліотека для роботи з вк апі, яка б знизила трафік цього скрипта?

Є. Наприклад таке: https://github.com/getjump/VkApiPHP

1.подивлюся....
2.Це аж ніяк не можна!
3.не знаю як це
4.було б ще класно якщо б до цієї бібліотеки були б ще хоч якісь відео, але гугл не поміг, значить нема, шкода......
але в принципі, що це міняє, бібліотека так само з'єднується з вконтакті, тільки дає "стиль" написаному коду, тож вона може дати 504

Програмуй! або запрограмують тебе!
...

9

Re: Як оптимізувати цей PHP-скрипт?

Vo_Vik написав:

Як вас ще не закопали на цьому форумі за такий стиль кодінгу)

http://php.net/manual/en/function.set-time-limit.php
От таке на початку поставте.

Дякую! цим і скористався!
Програмуй! або запрограмують тебе!
...

10

Re: Як оптимізувати цей PHP-скрипт?

olekca01 написав:
ost.bregin2014 написав:
0xDADA11C7 написав:

Подивитсь в сніхвері чи знежучувачі якомусь що пішло не так.

Я думав може є якась бібліотека для роботи з вк апі, яка б знизила трафік цього скрипта?

Можеш почитати є щось таке https://vk.com/dev/execute

Класно, але це тільки для JS, а я на php роблю....

Програмуй! або запрограмують тебе!
...

11

Re: Як оптимізувати цей PHP-скрипт?

Vo_Vik написав:

Як вас ще не закопали на цьому форумі за такий стиль кодінгу)

Я не знаю, як правильно, я самоучка, ще добре що я хоч якось коджу, а не сиджу в гта, майнкрафт....

Розкажіть як треба!
Програмуй! або запрограмують тебе!
...

12

Re: Як оптимізувати цей PHP-скрипт?

Sensetivity написав:

1. curl замість get_file_content.
2. Прибрати з циклу звернення до бази
3. Прибрати з циклу запити до API, упевнений, якимось чином можна відправляти запит на кілька об'єктів одночасно.

Я думав може є якась бібліотека для роботи з вк апі, яка б знизила трафік цього скрипта?

Є. Наприклад таке: https://github.com/getjump/VkApiPHP

1. не обовязково (працює- не чіпай)
2. не прибрати а зібрати в один запит
3. не прибрати а зібрати в один запит

https://blog.clever-games.win/
Це ще не кінець. Це навіть не початок кінця. Але, можливо, це кінець початку.
Зростання мудрості можна точно вимірювати ступенем зменшення злоби.
///// у творчій відпустці. не турбувати /////
Подякували: ostap34PHP1

13

Re: Як оптимізувати цей PHP-скрипт?

Прихований текст

221VOLT написав:
Sensetivity написав:

1. curl замість get_file_content. *YES*
2. Прибрати з циклу звернення до бази
3. Прибрати з циклу запити до API, упевнений, якимось чином можна відправляти запит на кілька об'єктів одночасно.

Я думав може є якась бібліотека для роботи з вк апі, яка б знизила трафік цього скрипта?

Є. Наприклад таке: https://github.com/getjump/VkApiPHP

221VOLT написав:

1. не обовязково (працює- не чіпай)
2. не прибрати а зібрати в один запит
3. не прибрати а зібрати в один запит

1. *BRAVO*  *YAHOO*  *HI* 
2.і як це можна уявити? ;D
3.і як це можна уявити знову? ;D

Програмуй! або запрограмують тебе!
...

14

Re: Як оптимізувати цей PHP-скрипт?

ost.bregin2014 написав:
Прихований текст

221VOLT написав:
Sensetivity написав:

1. curl замість get_file_content. *YES*
2. Прибрати з циклу звернення до бази
3. Прибрати з циклу запити до API, упевнений, якимось чином можна відправляти запит на кілька об'єктів одночасно.


Є. Наприклад таке: https://github.com/getjump/VkApiPHP

221VOLT написав:

1. не обовязково (працює- не чіпай)
2. не прибрати а зібрати в один запит
3. не прибрати а зібрати в один запит

1. *BRAVO*  *YAHOO*  *HI* 
2.і як це можна уявити? ;D
3.і як це можна уявити знову? ;D

типу оце

$insert = "insert into `posts` (post_id,post_id2,post_text,post_author,post_image,post_date) values (null,'$post_id','$text','admin','$post_id.jpg','$date')";
                    $run_insert = mysqli_query($con,$insert);

ліпити не в 1 строка - 1 запит а "багато строк - 1 запит", тобто в циклі лише збираємо, після циклу виконуємо

Прихований текст
якось так сумбурненько - прошу зрозуміти, голова бо-бо(((
https://blog.clever-games.win/
Це ще не кінець. Це навіть не початок кінця. Але, можливо, це кінець початку.
Зростання мудрості можна точно вимірювати ступенем зменшення злоби.
///// у творчій відпустці. не турбувати /////
Подякували: ostap34PHP1

15

Re: Як оптимізувати цей PHP-скрипт?

Не перевіряв, але якось так.

<?php
function getPage($url)
{
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    return curl_exec($ch);
}

?>
<!DOCTYPE html>
<html>
<head>
    <title>Page</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<center>
    <?php
    $con = mysqli_connect('localhost', 'kovdos_vesti', 'vesti999', 'kovdos_vesti');

    mysqli_set_charset($con, "utf8");

    //@header('Content-Type: text/html; charset=utf-8'); зайве, дивись <head>

    $query = mysqli_query($con, 'select * from `setting`');
    $row = mysqli_fetch_array($query);

    $group = $row['group'];
    $post_max_number = $row['post_max_number'];
    $comment_max_number = $row['comment_max_number'];


    // $data = file_get_contents("https://api.vk.com/method/wall.get?domain=$group&count=$post_max_number");
    $data = getPage("https://api.vk.com/method/wall.get?domain={$group}&count={$post_max_number}");
    $json_data = json_decode($data, true);

    foreach ($json_data['response'] as $key => $value) {
        global $con;
        if (isset($value['attachment']) && $value['attachment']['type'] === 'photo') {

            $from_id = urlencode($value['from_id']);
            $post_id = urlencode($value['id']);
            $text = $value['text'];
            $img = $value['attachment']['photo']['src_big'];

            $date = date("y-m-d", $value['date']);
            $year = date("Y");
            $month = date("M", $date);
            $day = date("d");


            if (!file_exists("content/{$year}/{$month}/{$day}/posts_image")) {
                mkdir("content/{$year}/{$month}/{$day}/posts_image", 0777, true);
            }

            $img_file = getPage($img);
            file_put_contents("content/{$year}/{$month}/{$day}/posts_image/$post_id.jpg", $img_file);
            // copy($img, "content/{$year}/{$month}/{$day}/posts_image/$post_id.jpg");

            $insert = "insert into `posts` (post_id,post_id2,post_text,post_author,post_image,post_date) values (null,'$post_id','$text','admin','$post_id.jpg','$date')";
            $run_insert = mysqli_query($con, $insert);
            if ($run_insert) {
                echo "<b style='color:green;'>yes {$post_id}</b><br>";
            } else {
                echo "<b style='color:red;'>no</b><br>";
            }

            $getComments = getPage("https://api.vk.com/method/wall.getComments?post_id={$post_id}&owner_id={$from_id}&count={$comment_max_number}");

            $json_Comments = json_decode($getComments, true);

            foreach ($json_Comments['response'] as $key => $value) {

                $text_com = $value['text'];
                $user_id = $value['uid'];

                $url3 = getPage("https://api.vk.com/method/users.get?user_ids=$user_id&fields=photo_200");

                $json_data3 = json_decode($url3, true);

                // Для чогго тут цей цикл?
                foreach ($json_data3['response'] as $key => $value2) {
                    $name = $value2['first_name'];
                    $image_src = $value2['photo_200'];
                    $date = date("y-m-d", $value['date']);
                }

                if (!file_exists("content/{$year}/{$month}/{$day}/photo_comments")) {
                    mkdir("content/{$year}/{$month}/{$day}/photo_comments", 0777, true);
                }

                $img_file = getPage($img);
                file_put_contents("content/{$year}/{$month}/{$day}/photo_comments/$name.jpg", $img_file);
                // copy($img, "content/{$year}/{$month}/{$day}/photo_comments/$name.jpg");

                $insert = "insert into `comments` (com_id,post_id,com_text,com_author,user_image,post_date) values (null,'$post_id','$text_com','$name','$name.jpg','$date')";
                $run_insert = mysqli_query($con, $insert);
                if ($run_insert) {
                    echo "<b style='color:green;'>yes, comment {$post_id}</b><br>";
                } else {
                    echo "<b style='color:red;'>No, comment</b><br>";
                }
            }
        }
    }
    ?>
</center>
</body>
</html>
Подякували: 0xDADA11C7, 221VOLT2

16

Re: Як оптимізувати цей PHP-скрипт?

А ще ж можна просто запускати програму з консолі... Там немає таймауту.

17

Re: Як оптимізувати цей PHP-скрипт?

Прихований текст

Sensetivity написав:

Не перевіряв, але якось так.

<?php
function getPage($url)
{
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    return curl_exec($ch);
}

?>
<!DOCTYPE html>
<html>
<head>
    <title>Page</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<center>
    <?php
    $con = mysqli_connect('localhost', 'kovdos_vesti', 'vesti999', 'kovdos_vesti');

    mysqli_set_charset($con, "utf8");

    //@header('Content-Type: text/html; charset=utf-8'); зайве, дивись <head>

    $query = mysqli_query($con, 'select * from `setting`');
    $row = mysqli_fetch_array($query);

    $group = $row['group'];
    $post_max_number = $row['post_max_number'];
    $comment_max_number = $row['comment_max_number'];


    // $data = file_get_contents("https://api.vk.com/method/wall.get?domain=$group&count=$post_max_number");
    $data = getPage("https://api.vk.com/method/wall.get?domain={$group}&count={$post_max_number}");
    $json_data = json_decode($data, true);

    foreach ($json_data['response'] as $key => $value) {
        global $con;
        if (isset($value['attachment']) && $value['attachment']['type'] === 'photo') {

            $from_id = urlencode($value['from_id']);
            $post_id = urlencode($value['id']);
            $text = $value['text'];
            $img = $value['attachment']['photo']['src_big'];

            $date = date("y-m-d", $value['date']);
            $year = date("Y");
            $month = date("M", $date);
            $day = date("d");


            if (!file_exists("content/{$year}/{$month}/{$day}/posts_image")) {
                mkdir("content/{$year}/{$month}/{$day}/posts_image", 0777, true);
            }

            $img_file = getPage($img);
            file_put_contents("content/{$year}/{$month}/{$day}/posts_image/$post_id.jpg", $img_file);
            // copy($img, "content/{$year}/{$month}/{$day}/posts_image/$post_id.jpg");

            $insert = "insert into `posts` (post_id,post_id2,post_text,post_author,post_image,post_date) values (null,'$post_id','$text','admin','$post_id.jpg','$date')";
            $run_insert = mysqli_query($con, $insert);
            if ($run_insert) {
                echo "<b style='color:green;'>yes {$post_id}</b><br>";
            } else {
                echo "<b style='color:red;'>no</b><br>";
            }

            $getComments = getPage("https://api.vk.com/method/wall.getComments?post_id={$post_id}&owner_id={$from_id}&count={$comment_max_number}");

            $json_Comments = json_decode($getComments, true);

            foreach ($json_Comments['response'] as $key => $value) {

                $text_com = $value['text'];
                $user_id = $value['uid'];

                $url3 = getPage("https://api.vk.com/method/users.get?user_ids=$user_id&fields=photo_200");

                $json_data3 = json_decode($url3, true);

                // Для чогго тут цей цикл?
                foreach ($json_data3['response'] as $key => $value2) {
                    $name = $value2['first_name'];
                    $image_src = $value2['photo_200'];
                    $date = date("y-m-d", $value['date']);
                }

                if (!file_exists("content/{$year}/{$month}/{$day}/photo_comments")) {
                    mkdir("content/{$year}/{$month}/{$day}/photo_comments", 0777, true);
                }

                $img_file = getPage($img);
                file_put_contents("content/{$year}/{$month}/{$day}/photo_comments/$name.jpg", $img_file);
                // copy($img, "content/{$year}/{$month}/{$day}/photo_comments/$name.jpg");

                $insert = "insert into `comments` (com_id,post_id,com_text,com_author,user_image,post_date) values (null,'$post_id','$text_com','$name','$name.jpg','$date')";
                $run_insert = mysqli_query($con, $insert);
                if ($run_insert) {
                    echo "<b style='color:green;'>yes, comment {$post_id}</b><br>";
                } else {
                    echo "<b style='color:red;'>No, comment</b><br>";
                }
            }
        }
    }
    ?>
</center>
</body>
</html>

1.Для чого переводити в curl? чим він оптимізує????  ;D  ;D  ;D  ;D
2.ну таке як фукнкцію copy я забрати аж ніяк не можу, скрипт має зберігати дані! 8)
3.цей цикл для того щоб взяти  дані про користувача вк, але попробую без нього... *YAHOO*  *YES*
4.Дякую що "попорпались" в моєму коді :D  *BRAVO*  *BRAVO*  *BRAVO*  *BRAVO*  *BRAVO*  *BRAVO*

Програмуй! або запрограмують тебе!
...

18 Востаннє редагувалося Sensetivity (02.04.2017 22:55:16)

Re: Як оптимізувати цей PHP-скрипт?

ost.bregin2014 написав:
Прихований текст

Sensetivity написав:

Не перевіряв, але якось так.

<?php
function getPage($url)
{
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    return curl_exec($ch);
}

?>
<!DOCTYPE html>
<html>
<head>
    <title>Page</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<center>
    <?php
    $con = mysqli_connect('localhost', 'kovdos_vesti', 'vesti999', 'kovdos_vesti');

    mysqli_set_charset($con, "utf8");

    //@header('Content-Type: text/html; charset=utf-8'); зайве, дивись <head>

    $query = mysqli_query($con, 'select * from `setting`');
    $row = mysqli_fetch_array($query);

    $group = $row['group'];
    $post_max_number = $row['post_max_number'];
    $comment_max_number = $row['comment_max_number'];


    // $data = file_get_contents("https://api.vk.com/method/wall.get?domain=$group&count=$post_max_number");
    $data = getPage("https://api.vk.com/method/wall.get?domain={$group}&count={$post_max_number}");
    $json_data = json_decode($data, true);

    foreach ($json_data['response'] as $key => $value) {
        global $con;
        if (isset($value['attachment']) && $value['attachment']['type'] === 'photo') {

            $from_id = urlencode($value['from_id']);
            $post_id = urlencode($value['id']);
            $text = $value['text'];
            $img = $value['attachment']['photo']['src_big'];

            $date = date("y-m-d", $value['date']);
            $year = date("Y");
            $month = date("M", $date);
            $day = date("d");


            if (!file_exists("content/{$year}/{$month}/{$day}/posts_image")) {
                mkdir("content/{$year}/{$month}/{$day}/posts_image", 0777, true);
            }

            $img_file = getPage($img);
            file_put_contents("content/{$year}/{$month}/{$day}/posts_image/$post_id.jpg", $img_file);
            // copy($img, "content/{$year}/{$month}/{$day}/posts_image/$post_id.jpg");

            $insert = "insert into `posts` (post_id,post_id2,post_text,post_author,post_image,post_date) values (null,'$post_id','$text','admin','$post_id.jpg','$date')";
            $run_insert = mysqli_query($con, $insert);
            if ($run_insert) {
                echo "<b style='color:green;'>yes {$post_id}</b><br>";
            } else {
                echo "<b style='color:red;'>no</b><br>";
            }

            $getComments = getPage("https://api.vk.com/method/wall.getComments?post_id={$post_id}&owner_id={$from_id}&count={$comment_max_number}");

            $json_Comments = json_decode($getComments, true);

            foreach ($json_Comments['response'] as $key => $value) {

                $text_com = $value['text'];
                $user_id = $value['uid'];

                $url3 = getPage("https://api.vk.com/method/users.get?user_ids=$user_id&fields=photo_200");

                $json_data3 = json_decode($url3, true);

                // Для чогго тут цей цикл?
                foreach ($json_data3['response'] as $key => $value2) {
                    $name = $value2['first_name'];
                    $image_src = $value2['photo_200'];
                    $date = date("y-m-d", $value['date']);
                }

                if (!file_exists("content/{$year}/{$month}/{$day}/photo_comments")) {
                    mkdir("content/{$year}/{$month}/{$day}/photo_comments", 0777, true);
                }

                $img_file = getPage($img);
                file_put_contents("content/{$year}/{$month}/{$day}/photo_comments/$name.jpg", $img_file);
                // copy($img, "content/{$year}/{$month}/{$day}/photo_comments/$name.jpg");

                $insert = "insert into `comments` (com_id,post_id,com_text,com_author,user_image,post_date) values (null,'$post_id','$text_com','$name','$name.jpg','$date')";
                $run_insert = mysqli_query($con, $insert);
                if ($run_insert) {
                    echo "<b style='color:green;'>yes, comment {$post_id}</b><br>";
                } else {
                    echo "<b style='color:red;'>No, comment</b><br>";
                }
            }
        }
    }
    ?>
</center>
</body>
</html>

1.Для чого переводити в curl? чим він оптимізує????  ;D  ;D  ;D  ;D
2.ну таке як фукнкцію copy я забрати аж ніяк не можу, скрипт має зберігати дані! 8)
3.цей цикл для того щоб взяти  дані про користувача вк, але попробую без нього... *YAHOO*  *YES*
4.Дякую що "попорпались" в моєму коді :D  *BRAVO*  *BRAVO*  *BRAVO*  *BRAVO*  *BRAVO*  *BRAVO*

1. Швидкість виконання http-запитів
2. Почитайте, що робить file_put_content.

По коду, наче для чого, щоб взяти інфу про групу.
Загалом я вас зрозумів.
Ви навіть не намагаєтесь. Ви знайшли одну функцію і один лінійних метод і не хочете його переосмислювати.
Тому, мабуть, найкраще для вас запустили програму з консолі. Вона працюватиме вічно, і 504 помилки не буде.

Подякували: ostap34PHP1

19

Re: Як оптимізувати цей PHP-скрипт?

Sensetivity написав:
ost.bregin2014 написав:
Прихований текст

Sensetivity написав:

Не перевіряв, але якось так.

<?php
function getPage($url)
{
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    return curl_exec($ch);
}

?>
<!DOCTYPE html>
<html>
<head>
    <title>Page</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<center>
    <?php
    $con = mysqli_connect('localhost', 'kovdos_vesti', 'vesti999', 'kovdos_vesti');

    mysqli_set_charset($con, "utf8");

    //@header('Content-Type: text/html; charset=utf-8'); зайве, дивись <head>

    $query = mysqli_query($con, 'select * from `setting`');
    $row = mysqli_fetch_array($query);

    $group = $row['group'];
    $post_max_number = $row['post_max_number'];
    $comment_max_number = $row['comment_max_number'];


    // $data = file_get_contents("https://api.vk.com/method/wall.get?domain=$group&count=$post_max_number");
    $data = getPage("https://api.vk.com/method/wall.get?domain={$group}&count={$post_max_number}");
    $json_data = json_decode($data, true);

    foreach ($json_data['response'] as $key => $value) {
        global $con;
        if (isset($value['attachment']) && $value['attachment']['type'] === 'photo') {

            $from_id = urlencode($value['from_id']);
            $post_id = urlencode($value['id']);
            $text = $value['text'];
            $img = $value['attachment']['photo']['src_big'];

            $date = date("y-m-d", $value['date']);
            $year = date("Y");
            $month = date("M", $date);
            $day = date("d");


            if (!file_exists("content/{$year}/{$month}/{$day}/posts_image")) {
                mkdir("content/{$year}/{$month}/{$day}/posts_image", 0777, true);
            }

            $img_file = getPage($img);
            file_put_contents("content/{$year}/{$month}/{$day}/posts_image/$post_id.jpg", $img_file);
            // copy($img, "content/{$year}/{$month}/{$day}/posts_image/$post_id.jpg");

            $insert = "insert into `posts` (post_id,post_id2,post_text,post_author,post_image,post_date) values (null,'$post_id','$text','admin','$post_id.jpg','$date')";
            $run_insert = mysqli_query($con, $insert);
            if ($run_insert) {
                echo "<b style='color:green;'>yes {$post_id}</b><br>";
            } else {
                echo "<b style='color:red;'>no</b><br>";
            }

            $getComments = getPage("https://api.vk.com/method/wall.getComments?post_id={$post_id}&owner_id={$from_id}&count={$comment_max_number}");

            $json_Comments = json_decode($getComments, true);

            foreach ($json_Comments['response'] as $key => $value) {

                $text_com = $value['text'];
                $user_id = $value['uid'];

                $url3 = getPage("https://api.vk.com/method/users.get?user_ids=$user_id&fields=photo_200");

                $json_data3 = json_decode($url3, true);

                // Для чогго тут цей цикл?
                foreach ($json_data3['response'] as $key => $value2) {
                    $name = $value2['first_name'];
                    $image_src = $value2['photo_200'];
                    $date = date("y-m-d", $value['date']);
                }

                if (!file_exists("content/{$year}/{$month}/{$day}/photo_comments")) {
                    mkdir("content/{$year}/{$month}/{$day}/photo_comments", 0777, true);
                }

                $img_file = getPage($img);
                file_put_contents("content/{$year}/{$month}/{$day}/photo_comments/$name.jpg", $img_file);
                // copy($img, "content/{$year}/{$month}/{$day}/photo_comments/$name.jpg");

                $insert = "insert into `comments` (com_id,post_id,com_text,com_author,user_image,post_date) values (null,'$post_id','$text_com','$name','$name.jpg','$date')";
                $run_insert = mysqli_query($con, $insert);
                if ($run_insert) {
                    echo "<b style='color:green;'>yes, comment {$post_id}</b><br>";
                } else {
                    echo "<b style='color:red;'>No, comment</b><br>";
                }
            }
        }
    }
    ?>
</center>
</body>
</html>

1.Для чого переводити в curl? чим він оптимізує????  ;D  ;D  ;D  ;D
2.ну таке як фукнкцію copy я забрати аж ніяк не можу, скрипт має зберігати дані! 8)
3.цей цикл для того щоб взяти  дані про користувача вк, але попробую без нього... *YAHOO*  *YES*
4.Дякую що "попорпались" в моєму коді :D  *BRAVO*  *BRAVO*  *BRAVO*  *BRAVO*  *BRAVO*  *BRAVO*

1. Швидкість виконання http-запитів
2. Почитайте, що робить file_put_content.

По коду, наче для чого, щоб взяти інфу про групу.
Загалом я вас зрозумів.
Ви навіть не намагаєтесь. Ви знайшли одну функцію і один лінійних метод і не хочете його переосмислювати.
Тому, мабуть, найкраще для вас запустили програму з консолі. Вона працюватиме вічно, і 504 помилки не буде.

З консолі я не можу запустити, скрипт має працювати на сервері, і дійсно, скрипт "бере" пости з групи вк, коментарі, і зберігає їх в базі даних!

Програмуй! або запрограмують тебе!
...

20

Re: Як оптимізувати цей PHP-скрипт?

ost.bregin2014 написав:
Sensetivity написав:
ost.bregin2014 написав:
Прихований текст

1.Для чого переводити в curl? чим він оптимізує????  ;D  ;D  ;D  ;D
2.ну таке як фукнкцію copy я забрати аж ніяк не можу, скрипт має зберігати дані! 8)
3.цей цикл для того щоб взяти  дані про користувача вк, але попробую без нього... *YAHOO*  *YES*
4.Дякую що "попорпались" в моєму коді :D  *BRAVO*  *BRAVO*  *BRAVO*  *BRAVO*  *BRAVO*  *BRAVO*

1. Швидкість виконання http-запитів
2. Почитайте, що робить file_put_content.

По коду, наче для чого, щоб взяти інфу про групу.
Загалом я вас зрозумів.
Ви навіть не намагаєтесь. Ви знайшли одну функцію і один лінійних метод і не хочете його переосмислювати.
Тому, мабуть, найкраще для вас запустили програму з консолі. Вона працюватиме вічно, і 504 помилки не буде.

З консолі я не можу запустити, скрипт має працювати на сервері, і дійсно, скрипт "бере" пости з групи вк, коментарі, і зберігає їх в базі даних!

А на сервері немає SSH чи на худий кінець cronjob?

Загалом я вам свої рекомендації дав чи застосовувати їх чи ні - справа ваша.

Подякували: ostap34PHP1