registrieren registriertes Mitglied


Anzeige

Anzeige

Sind hier PHP'ler unterwegs?

Stell hier Deine Frage zu: HTML, CSS, PHP, MySQL, htaccess, robots.txt, Javascript usw
supervisior
PostRank 9
PostRank 9
Beiträge: 2718
Registriert: 26.06.2006, 09:11

Beitrag supervisior » 24.11.2020, 17:05 Sind hier PHP'ler unterwegs?

Bevor ich jetzt gleich zu tief und zu umfangreich einsteige, worum es geht, frag ich erstmal nach. Sind hier PHP'ler unterwegs?
Zuletzt geändert von supervisior am 24.11.2020, 19:35, insgesamt 1-mal geändert.

Anzeige von:


Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Hanzo2012
Community-Manager
Community-Manager
Beiträge: 2166
Registriert: 26.09.2011, 23:31

Beitrag Hanzo2012 » 24.11.2020, 18:49 Sind hier PHP'ler unterwegs?

Mindestens zwei! ;)

supervisior
PostRank 9
PostRank 9
Beiträge: 2718
Registriert: 26.06.2006, 09:11

Beitrag supervisior » 24.11.2020, 19:24 Sind hier PHP'ler unterwegs?

Sehr schön. Fit mit PHP-curl?

Hanzo2012
Community-Manager
Community-Manager
Beiträge: 2166
Registriert: 26.09.2011, 23:31

Beitrag Hanzo2012 » 24.11.2020, 19:35 Sind hier PHP'ler unterwegs?

Stell einfach deine Frage ;)

supervisior
PostRank 9
PostRank 9
Beiträge: 2718
Registriert: 26.06.2006, 09:11

Beitrag supervisior » 24.11.2020, 19:43 Sind hier PHP'ler unterwegs?

Muss ich doch vorher wissen....

Muss vorher vorausschicken, dass ich mit meinem Anliegen zunächst bei stackoverflow war und fast schien es als hätten wir eine Lösung gefunden, aber es wurde zu viel kommentiert, was den Aufpassern bei stackoverflow nicht gepasst hat. Also Sackgasse!

Schau Dir den nachfolgenden Code erstmal an. Der funktioniert und macht was er soll. Wenn so weit klar, dann sag ich Dir wo es hängt.

Code: Alles auswählen

        function multi_thread_curl($urlArray, $optionArray, $nThreads) {
            global $lc_delay_value, $lc_delay_cleaned;
            $curlArray = array_chunk($urlArray, $nThreads, $preserve_keys = true);


            foreach ($curlArray as $threads) {

                foreach ($threads as $key => $value) {
                    ${'ch' . $key} = curl_init();
                    curl_setopt_array(${'ch' . $key}, $optionArray);
                    curl_setopt(${'ch' . $key}, CURLOPT_URL, $value); 
                }

                $mh = curl_multi_init();

                foreach ($threads as $key => $value) {
                    curl_multi_add_handle($mh, ${'ch' . $key});
                }

                $active = null;
                do {
                    $mrc = curl_multi_exec($mh, $active);
                    usleep($lc_delay_value);
                } while ($mrc == CURLM_CALL_MULTI_PERFORM);

                while ($active && $mrc == CURLM_OK) {
                    if (curl_multi_select($mh) != -1) {
                        do {
                            $mrc = curl_multi_exec($mh, $active);
                        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
                    }
                }


                foreach ($threads as $key => $value) {
                    $results[$key] = curl_multi_getcontent(${'ch' . $key});
                    curl_multi_remove_handle($mh, ${'ch' . $key});
                }


                curl_multi_close($mh);
            }
            return $results;
        }

        $optionArray = array(
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_HEADER => true,
            CURLOPT_CUSTOMREQUEST => 'GET',
            CURLOPT_FOLLOWLOCATION => false,
            CURLOPT_ENCODING => 'gzip',
            CURLOPT_CONNECTTIMEOUT => 10,
            CURLOPT_TIMEOUT => 10,
            CURLOPT_SSL_VERIFYHOST => 0,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_NOBODY => false,
            CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.47 Safari/537.36",
            CURLOPT_HTTPHEADER => array('Cache-Control: max-age=0,no-store,no-cache'),
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1
        );

        $nThreads = $lc_threads_value;

        $crawler_query = "SELECT url FROM lc_url WHERE blacklisted != 1";
        $crawler_query_result = $mysqli->query($crawler_query);

        if ($crawler_query_result->num_rows > 0) {
            while ($crawlUrls = $crawler_query_result->fetch_array()) {
                $crawlerurl = $crawlUrls['url'];


                $urlArray = array($crawlerurl);
                $results = multi_thread_curl($urlArray, $optionArray, $nThreads);

            }
        }

Anzeige von: