• cURL ile becerilerinizi geliştirin. cURL'de Uzmanlaşmak Belirli bir URL'ye POST İsteği Yapmak

    Viktor Gromov adında bir proje başlattı "AntiScam" ve saf kullanıcıların parasını emen dolandırıcılık planları ve saadet zinciri şemaları hakkında açıklayıcı makaleler yazmaya başladı. Dolandırıcılar hakkında yüzden fazla inceleme yayınlayan genç adam, para kazanmanın kanıtlanmış yollarına geçti. Böylece projeyle ilk tanışması oldu. Tekniğin "token" adı verilen geleneksel birimlerin alınıp anında satılmasına dayanması garip görünüyor. Burada her şey gerçekte nasıl çalışıyor, hadi başkalarının empoze ettiği tavsiyeler olmadan kendi başımıza anlamaya çalışalım.

    Viktor Gromov'dan Dolandırıcılığa Karşı Proje

    Viktor Gromov'un bloguyla tanışma sayfada başlıyor http://antilohblog.ru/obzor-iyle-2018/#home. Lütfen Token+ projesine yönelik reklam filmi dışında yazarın önceki çalışmalarına ilişkin tek bir incelemenin bulunmadığını unutmayın. Mantıklı bir soru ortaya çıkıyor: beyan edilen yüzlerce açıklayıcı makale nerede? Sanal dünya neden Viktor Gromov gibi bir karaktere aşina değil? Neden blogun dışında dövüşçünün gerçeğine dair tek bir incelemesi yok? Sorulan soruların cevapları, birkaç tıklamayla para kazanmaya karar verenleri memnun etmeyecektir.

    Yayınlanan incelemeler için blogun yazarını övebiliriz. Birçoğu var, hatta bazılarında elektronik cüzdanların ekran görüntüleri bile var. Bu tür bir titizlik sitemizin ekibinde her zaman olumlu duygulara neden olur. Ancak! Yine soru şu: Bunları eklemek için tek bir araç yoksa sayfaya nasıl girdiler? Cevap açık: Yazar, gönderileri sayfanın ana metniyle birlikte yayınladı. Postaya gönderilen yorumların olduğunu varsaymak aptallıktır. [e-posta korumalı] blog sayfasında görünür. Yazar, metnin içeriğine bakılmaksızın bunları görmezden gelecektir.

    Token+ projesinde nasıl para kazanılır?

    Token+ proje sayfasına ulaşmak için kullanıcının videonun altındaki büyük yeşil simgeye tıklaması gerekiyor. Bu işlem sizi kayıt sayfasına götürür. Doldurulması için herhangi bir gerçek veri gerektirmeyen ilkel bir formdur. Her satırda birkaç rastgele karakter var ve biz Viktor Gromov'dan bir bonusun sahibi oluyoruz. Kişisel hesabınıza girdikten sonra burada ne olduğunu ve nasıl çalıştığını hemen anlayamazsınız. Önceki sayfada yayınlanan videodan edindiğimiz bilgilere dayanarak jetonu etkinleştirmeye çalışıyoruz. Doğru, bunun neden gerekli olduğunu tam olarak anlamıyoruz.

    Birkaç anlamsız tıklama yapıp bir dakikadan biraz fazla bekledikten sonra tahakkukları öğrendik. 1206 ruble. Minimum eşik 5.000 ruble olarak belirlendiğinden bu miktar para çekme işlemini gerçekleştirmek için yeterli değildir. Buna göre, kullanıcının ikinci bir jeton, ardından üçüncü bir jeton satın alması gerekecek ... Ancak açıklığa kavuşturulması gereken küçük bir ayrıntı var: bir jetonun sanal birimini gerçek parayla satın alıyoruz ve çekilenler karşılığında satıyoruz.

    "Jeton+" - incelemelerimiz

    Editör kadromuzun Token+ projesinden para kazanma konusundaki değerlendirmeleri olumsuz. Kullanıcıya kendi fonlarını kullanırken anlamsız eylemler gerçekleştirmesi teklif edilir. Token alım satımına ilişkin herhangi bir talimat veya kural bulunmamaktadır. Ürünü fiyatlandırmak için net bir algoritma yoktur. Projeyi temsil eden tüzel kişi hakkında bilgi bulunmamaktadır. Kaynağın etkinliği hakkında bilgi yok. Önümüzdeki değişim nedir? Pazar yeri mi? Sahtekarlık! Bundan emin olmak hiç de zor değil (her ne kadar pahalı olsa da). Birbiri ardına açılacak boş ödeme isteklerini aşağıda görebilirsiniz:

    1. TOKEN D-SE'nin satın alınması - 600 ruble;
    2. TOKEN B-SR'nin satın alınması - 900 ruble;
    3. TOKEN K-RO'nun satın alınması - 1400 ruble;
    4. TOKEN S-BI'nin satın alınması - 750 ruble;
    5. TOKEN R-AI'nin satın alınması - 1200 ruble;
    6. TOKEN P-YI'nin satın alınması - 800 ruble;
    7. TOKEN Q-LC'nin satın alınması - 2100 ruble;
    8. Resmi TOKEN+ ağına bağlantı - 450 ruble;
    9. Ödeme sistemi komisyonunun ödenmesi - 550 ruble;
    10. Güvenli bir ağ geçidi aracılığıyla fonların kredilendirilmesi - 890 ruble;
    11. Ekteki belgelerin bankaya kaydedilmesi - 530 ruble;
    12. Dijital imzanın oluşturulması ve kaydedilmesi - 780 ruble.

    TEMEL ÖZELLİKLERİ
    "Token+" projesinde kazançlar

    Sitede ilan edilen içeriğe uygunluk HAYIR
    Malzeme yeniliği 10 üzerinden 0
    Video kılavuzu HAYIR
    Metin kılavuzu HAYIR
    Geri bildirim HAYIR
    Yeni başlayanlar için erişilebilirlik Evet
    Satın alma sonrasında yazardan geri bildirim HAYIR
    Uygun Fiyat Evet
    Gerçek kazanç fırsatı HAYIR
    İade garantisi HAYIR

    KONTROL SONUÇLARI:

    AntiScam projesinin yaratıcısı Viktor Gromov ve platform, büyük bir boşanmanın iki aşamasıdır. İlk seviyede, kullanıcının etrafına ustalıkla tuzaklar kurulur, onu olası satın alımlara hazırlar ve muhteşem kâr hikayeleri anlatır. İkinci aşamada ise hileli yollarla para çekip ellerinde hiçbir şey bırakmazlar. Bu iki hareketin yaratıcısı, acilen paraya ihtiyaç duyan insanların sıklıkla aldatmacanın kurbanı olmasıyla pek ilgilenmiyor. Suç yoluyla elde edilmiş olsa bile yalnızca kendi zenginleşmesini önemsiyor. Bu tür planlardan uzak durmanızı ve yalnızca kazanç kaynağı olarak kullanmanızı öneririz.

    Sizden dikkatli olmanızı ve yukarıdaki sitenin görsel olarak neye benzediğini hatırlamanızı rica ediyoruz. Gelecekte yazar hem kendi adını hem de sitenin adını değiştirebilir.

    başyazı « ÇeklerKurslar "dolandırıcılık olgusunun kapsamlı bir şekilde kontrol edilmesi ve bu adresin internette koşulsuz olarak engellenmesi talebiyle yukarıdaki projenin barındırma ve kayıt kuruluşuna resmi bir itiraz gönderdi. Dolandırıcılara kanmayın!

    Bunu yalnızca internette para kazanmak için kullanmanızı şiddetle tavsiye ederiz! Ayrıca bu açıklamayı paylaşmayı da unutmayın. sosyal ağlarda, ARKADAŞLARINIZI VE SEVDİKLERİNİZİ bu dolandırıcılıktan KORUMAK için!


    sp-force-hide ( ekran: yok;).sp-form ( ekran: blok; arka plan: rgba(255, 255, 255, 1); dolgu: 5 piksel; genişlik: %100; maksimum genişlik: %100; kenarlık -yarıçap: 0px; -moz-sınır-yarıçap: 0px; -webkit-sınır-yarıçap: 0px; yazı tipi ailesi: "Times New Roman", Times, serif; arka plan tekrarı: tekrar yok; arka plan konumu: merkez ; arka plan boyutu: otomatik; kenarlık genişliği: 2 piksel; kenarlık rengi: rgba(255, 34, 0, 1); kenarlık stili: katı; .sp-form .sp-form-fields-wrapper ( kenar boşluğu: 0 otomatik; genişlik: 540px;).sp-form .sp-form-control ( arka plan: rgba(247, 244, 242, 1); border-color: #cccccc; border-style: katı; border-width: 2px ; yazı tipi boyutu: 15 piksel; sol dolgu: 8,75 piksel; sağ dolgu: 8,75 piksel; kenarlık yarıçapı: 7 piksel; -moz-sınır-yarıçapı: 7 piksel; -webkit-border-yarıçapı: 7 piksel; yükseklik: 35 piksel; genişlik: 100%;).sp-form .sp-alan etiketi ( renk: #444444; yazı tipi boyutu: 15 piksel; yazı tipi stili: normal; yazı tipi ağırlığı: kalın;).sp-form .sp-düğmesi ( kenarlık- yarıçap : 4 piksel; -moz-sınır-yarıçapı: 4 piksel; -webkit-sınır-yarıçapı: 4 piksel; arka plan rengi: #ff6500; renk: #ffffff; genişlik: %100 yazı tipi ağırlığı: 700 yazı tipi stili: normal yazı tipi ailesi: "Segoe UI", Segoe, "Açık Sans", sans-serif; kenarlık genişliği: 1px; kenarlık rengi: #d65600; kenar stili: katı kutu gölgesi: ek 0 -2px 0 0 #c24d00; -moz-box-shadow: ek 0 -2px 0 0 #c24d00; -webkit-box-shadow: ek 0 -2px 0 0 #c24d00;).sp-form .sp-button-container ( text-align: center; width: auto;)

    500 RUBLE ALMAK İSTİYORUZ

    HER PAZARTESİ?


    ➤ Aramıza katılın

    (PHP 4 >= 4.2.0, PHP 5, PHP 7)

    token_get_all - Belirtilen kaynak PHP dizgeciklerine ayrılmalar

    Açılma

    token_get_all (dize $kaynak) : sıralamak

    belirtilen kaynak dizgesi, Zend motorunun sözdizimsel tarayıcısı kullanılarak PHP dil dizgeciklerine çözümlenir.

    Dizgeciklerin listesi için Çözümleyici belirteç_adı() yönetimini düzenler.

    Degistirgeler

    Çözümlenecek PHP kaynak kodu.

    Dönen Çöller

    Dizgecik betimleyicilerinden oluşan bir dizi. Onun dizgecik tasviricisi ya tek bir karakterden ( ; , . , > , ! gibi) oluşur ya da üç elementli bir diziden; 0. elemanda dizgecik indisi, 1. elemanda özgün dizgecinin dizgesel içeriği ve 2. elemanda satır numarası bulunur.

    Örnekler

    Örnek 1- token_get_all()örnekler

    $belirteçler = token_get_all("" );
    /* => dizi(
    dizi(T_OPEN_TAG, "dizi(T_ECHO, "yankı"),
    ";",
    dizi(T_CLOSE_TAG, "?>")); */

    /* Aşağıdaki örnekte dizge beklendiği gibi
    T_COMMENT (PHP<5"te" T_ML_COMMENT) olarak değil
    T_INLINE_HTML olarak çözümlenmektedir. Bunun nedeni
    sağlanan kodda hiçbir ama/kapama etiketinin bulunmamasıdır.
    Bu, normal bir dosyadaetiketlerinizin
    bir açıklamaya uymaya eşdeğerdir. */
    $tokens = token_get_all("/* açıklama */" );
    // => dizi(array(T_INLINE_HTML, "/* yorum */"));
    ?>

    Surum Bilgisi

    Surum: Açılma
    5.2.2 Satır elemanları 2. elemanda dönmeye başladı.

    9 yıl önce

    Evet, get_token_all() ile ilgili bazı sorunlar (WAMP'ta, PHP 5.3.0)

    1: hata satırı numaraları
    PHP 5.2.2 token_get_all() işlevinin 2. öğedeki Satır numaralarını döndürmesi gerektiğinden.
    .. ancak örneğin (WAMP'ta 5.3.0), yalnızca PHP koduyla mükemmel çalışır (HMTL miwed değil), ancak token_get_all() tarafından tespit edilen bazı T_INLINE_HTML varsa, bazen yanlış satır numaralarını bulursunuz (sonraki satıra dönün). .. :(

    2: hata uyarı mesajı döngüleri etkileyebilir
    Tamamlanmamış php koduyla ilgili uyarı (örneğin: php kodu satır satır):
    örneğin bir yorum etiketi kapalı değilse token_get_all() şu uyarıdaki döngüleri engelleyebilir:
    Uyarı: Sonlandırılmamış yorum başlangıç ​​çizgisi

    Bu sorun CLI modunda (php komut satırı) değil, yalnızca web modunda ortaya çıkıyor gibi görünüyor.

    Daha fazla kararlılık bekleniyor, token_get_all() yalnızca PHP kodunda kullanıldı (HMTL miwed değil):
    İlk önce PHP kodunun tamamını çıkarın (php açma ve kapatma etiketiyle),
    İkinci olarak saf PHP kodunda token_get_all() işlevini kullanın.

    3: Neden PHP kodunu çıkaracak bir fonksiyon yok (HTML'yi çıkarmak için Tidy'ye sahibiz..)?

    Bekliyordum, bir fonksiyon kullandım:

    Bu yazının sonundaki kod:
    http://www.developpez.net/forums/d786381/php/langage/
    fontctions/analyser-fichier-php-token_get_all/

    Bu işlev şunları desteklemez:
    - Eski gösterim: ""Ve"<% %>"
    - heredoc sözdizimi
    - nowdoc sözdizimi (PHP 5.3.0'dan beri)

    10 yıl önce

    Yorumların sayılması da dahil olmak üzere kaynak kod satırlarını saymak için tokenizer işlevlerini kullanmak istedim. Bunu normal ifadelerle yapmaya çalışmak, bir dizede /* göründüğü durumlar veya diğer durumlar nedeniyle iyi sonuç vermez. token_get_all() işlevi, tüm yorumları doğru şekilde tespit ederek bu görevi kolaylaştırır. Ancak yeni satır karakterlerini simgeleştirmez. Yeni satır karakterlerini de T_NEW_LINE olarak belirtmek için aşağıdaki işlev kümesini yazdım.

    define("T_NEW_LINE", - 1);

    function token_get_all_nl($kaynak)
    {
    $new_tokens = dizi();

    // jetonları al
    $belirteçler = token_get_all($kaynak);

    // Yeni satırları kendi belirteçlerine böl
    foreach ($tokens as $token )
    {
    $token_name = is_array ($token) ? $belirteç[0]: null;
    $token_data = is_array ($token) ? $belirteç [ 1 ] : $belirteç ;

    // Kapalı dizeleri veya çok satırlı yorumları bölme
    if ($token_name == T_CONSTANT_ENCAPSED_STRING || substr ($token_data , 0 , 2 ) == "/*" )
    {
    $yeni_belirteçler = dizi($belirteç_adı, $belirteç_verileri);
    devam etmek;
    }

    // Verileri yeni satırlara böl
    $split_data = preg_split ("#(\r\n|\n)#" , $token_data , - 1 , PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );

    Foreach ($split_data as $data )
    {
    if ($veri == "\r\n" || $veri == "\n" )
    {
    // Bu yeni bir satır belirtecidir
    $yeni_belirteçler = dizi(T_NEW_LINE, $veri);
    }
    başka
    {
    // Belirteci orijinal belirteç adının altına ekleyin
    $new_tokens = is_array ($token) ? dizi($belirteç_adı, $veri) : $veri;
    }
    }
    }

    $new_tokens değerini döndürün;
    }

    function token_name_nl($token )
    {
    if ($token === T_NEW_LINE )
    {
    "T_NEW_LINE" değerini döndür;
    }

    Return token_name($token);
    }

    ?>

    Örnek kullanım:

    $tokens = token_get_all_nl(file_get_contents("somecode.php" ));

    foreach ($tokens as $token )
    {
    if (is_array ($token ))
    {
    echo (belirteç_adı_nl ($belirteç [ 0 ]) . ": "" . $belirteç [ 1 ] . ""
    " );
    }
    başka
    {
    Eko (
    """ . $belirteç . ""
    " );
    }
    }

    ?>

    Bu işlevlerle kod satırlarını ve yorum satırlarını nasıl sayacağınızı çözebileceğinizden eminim. Bu, normal ifadelerle kod satırlarını saymaya yönelik önceki girişimime göre çok büyük bir gelişmeydi. Umarım bu, birçok kişi gibi birine yardımcı olur. Bu web sitesindeki kullanıcıların katkıda bulunduğu örnekler geçmişte bana yardımcı oldu.

    10 ay önce

    Dikkat: TOKEN_PARSE'yi geçersiz bir php dosyasıyla kullanırken şuna benzer bir hata alabilirsiniz:
    Ayrıştırma hatası: sözdizimi hatası, beklenmeyen "__construct" (T_STRING), 15. satırda işlev (T_FUNCTION) veya const (T_CONST) bekleniyor
    Bu işlev bir dosya adı yerine bir dize kabul ettiğinden ve bu nedenle ikincisi hakkında hiçbir fikri olmadığından eksik dosya adına dikkat edin.
    Ancak bir istisna daha memnuniyetle karşılanacaktır.

    İnternette giderek daha fazla insan kendilerini harika blog yazarları olarak göstermeye çalışıyor, ancak kendileri öyle değil. Victor Gromov, ANTILOKHOTRON projesini blog-obzor.ru'da sunuyor. Victor, web sitesinde bir video dışında hiçbir şey olmamasına rağmen, çeşitli dolandırıcılıklarla ilgili çok sayıda inceleme yazdığına bizi ikna etmeye çalışıyor.

    Bu videoda bilinmeyen bir yazar TOKEN+ ile para kazanmayı anlatıyor. Bir jeton aldım, etkinleştirdim, parayı aldım, geri çektim. Viktor Gromov gerçekten bu kadar tanınmış bir yazar ve dolandırıcılıkların ifşacısı olsaydı, onu tanır ve sözlerine inanırdık.

    Ancak Viktor Gromov şüpheli ve bilinmeyen bir kişidir. Evet, onun kazanma şekli de analiz ettiğimiz pek çok soruyu gündeme getiriyor.

    Bu ANTILOKHOTRON projesi, Viktor Gromov ve TOKEN+ hizmeti hakkında bir incelemedir. Boşanmak iyi ve kolay para kazanmanın bir yolu mu?

    "TOKEN+" nedir?

    Bu hizmeti daha önce hiç görmemiştik. "TOKEN+" kendisini, anında rastgele bir nakit ödülle değiştirebileceğiniz tokenlerin satışına yönelik bir site olarak konumlandırıyor. Kabaca söylemek gerekirse, paranın herkese dağıtılması.

    Blogumuzun okuyucusuysanız, paranın internet ağaçlarında yetişmediğini uzun zamandır biliyorsunuzdur. Her ruble, ağın dışında olduğu gibi aynı sıkı çalışma ve özveriyle kazanılır. Ancak pek çok şüpheli site bizi bundan caydırmaya çalışıyor. Mesela parayı al, burada dağıtılıyorlar.

    ANTILOKHOTRON projesi de oldukça şüpheli. Viktor Gromov'un yazdığı tüm bu makaleler nerede? Gerçek bir şirketin gerçek blogunun neye benzediğini bilmiyorsanız, bizim blogumuzu ziyaret edebilirsiniz. Ancak bu konuda Gromov'un web sitesinde olduğundan çok daha fazla bilgi var.

    Ama yine de TOKEN+ hizmetini kontrol ettik. Zaten kayıt sürecinde şüpheler daha da arttı. Onay, veri doğrulama, ek hesap koruması vb. yok. Bilgilere bakılırsa "TOKEN+", iyi işlevselliğe sahip oldukça parasal bir hizmet olmalıdır, ancak öyle değildir.

    Ayrıca satın alınan tokenlardan kazanç elde etme olasılığını da kontrol ettik. İşte bu şüpheli kazançların süreci şöyle görünüyor:

    1. Siteye gittim
    2. Jeton satın alındı
    3. Onları etkinleştirdim
    4. Kazanılan parayı geri çekti

    O halde neden blog-obzor.ru sitesi var? ANTILOHOTRON projesi bunu para kazanmanın en güvenilir yolu olarak önermektedir. Onlar. aslında paranın dağıtılacağı yere yönlendiriliyoruz ama aynı şey olmuyor. O halde TOKEN+ web sitesi neden oluşturuldu?

    Token satın alırken gerçek para ödersiniz ve karşılığında anlaşılmaz bir hizmetin anlaşılmaz bir iç para birimini alırsınız. Bakiyeniz sonunda 5.000 rubleye çıkacak ancak bu parayı çekemeyeceksiniz.

    Ve bu kesinlikle para değil, sadece ekrandaki sayılar. Mucize tokenleri satın aldıktan sonra çeşitli bahanelerle birkaç transfer daha yapmanız istenecektir.

    SATIN ALMAK JETON S iş zekası — 750 OVMAK

    SATIN ALMAK JETON R yapay zeka — 1200 OVMAK

    SATIN ALMAK JETON P YI — 800 OVMAK

    SATIN ALMAK JETON Q LC — 2100 OVMAK

    Resmi TOKEN+ ağına bağlantı — 450 RUB

    Ödeme sistemi komisyonunun ödenmesi — 550 RUB

    Güvenli bir ağ geçidi üzerinden para yatırın — 890 RUB

    Ve diğerleri

    Ancak bundan sonra bile söz verilen parayı alamayacaksınız. ANTILOKHOTRON Projesi - EN GERÇEK ALDATMACA ve BOŞANMA! Viktor Gromov, TOKEN+ hizmetinin reklamını yapan yaygın bir dolandırıcıdır. Bütün mesele bizi blog-obzor.ru sitesindeki bilgilerin doğruluğuna ikna etmektir.

    Aslında Viktor Gromov, sahte hizmetler hakkında hiçbir zaman inceleme yazmadı çünkü. o bir dolandırıcıdır. "TOKEN+" fikrinin modası çoktan geçmiş durumda. Benzer dolandırıcılık sitelerini zaten çok sayıda gördük.

    Arkadaşlar gerçekten internetten para kazanmak istiyorsanız kanıtlanmış kazanç yöntemleri bölümümüze gidin. Burada güvenilir ve güvenilir yazarların gerçek çalışma planlarını bulacaksınız.

    Sürekli destek hizmeti, yalnızca %100 yöntemler. Bugün kazanmaya başlayın.

    Merhaba! Bu yazımızda tokenlarla nasıl para kazanılır konusunu ele alacağız.

    • Ne kadar kazanabilirsin?: yılda %1000'e kadar.
    • Yapmaya değer mi: Döviz konusunda deneyiminiz varsa.

    Tokenlar hakkında genel bilgi

    Gelişmeye devam ediyor. Her gün yatırımcısının yerini alacak, pazara girip milyarlar kazandıracak yeni projeler ortaya çıkıyor. Ancak bunların hepsi müşterilerine gerçek faydalar sağlamıyor.

    Jetonlar — katma değer sağlayan alternatif kripto para birimleri. Yani sadece ödeme yapmak için kullanılmazlar.

    Jetonlar- bunların neredeyse tamamı motorlarında yapılan madeni paralardır ve bitcoin motorunda yapılanların yaklaşık yarısı. Terimin tam anlamıyla bir token haline gelmek için kullanıcılara işleri geliştirebilecek, maliyetleri azaltabilecek vb. yeni bir şey sunmanız gerekir.

    ICO'da kazanç

    ICO'dan elde edilen kazançlar İnternet'in Ru segmentinde hâlâ yeterince açıklanmamaktadır. Aslında piyasayı analiz etmeyi bilen ve kripto para birimi hakkında çok şey bilenler için bu büyük bir kazanç fırsatıdır. Ancak uzun vadede bu, nişte bir krize yol açacaktır.

    ICO - jetonların ilk yerleştirilmesi.

    Sıradan bir insan ICO'dan yalnızca tek bir şekilde para kazanabilir: spekülasyon. Çalışma şeması yaklaşık olarak aşağıdaki gibidir:

    1. Cryptomarket web sitesine gidiyoruz.
    2. Gelecek vaat eden bir altcoin seçmek.
    3. PreICO aşamasında %10 - 50'ye varan indirimlerle coin satın alıyoruz (bunu mümkün olduğunca erken yapmaya çalışın).
    4. Listeyi bekliyoruz.
    5. Kur belli bir değere yükselene kadar bekleriz (genellikle bu indirim tutarıdır).
    6. Satıyoruz.

    Bu sonsuza kadar tekrarlanabilir: yeni bir kripto para seçin, ICO öncesi aşamaya girin, indirimli olarak satın alın ve satın. Her zamanki spekülasyon, bunda yeni bir şey yok. Elbette bir noktada bu tür spekülatörlerin çoğunun piyasayı aşırı ısıttığı ortaya çıkacak ve daha önce Dotcom'larda ve ipotekli tahvil piyasasında olduğu gibi piyasa patlayacak. Ama kimin umurunda olmalı?

    Hala alternatif yollar var, ancak bunlar zaten ICO geliştiricileri için uygundur. Bu:

    • Coin promosyon ücreti. ICO'ları piyasaya süren ekipler, kârın %1-10'unu kendi ihtiyaçları (promosyon, ürün iyileştirme) için alır. Ancak gerçekte fonların yalnızca yarısı kullanılıyor, geri kalanı takımın cebine giriyor.
    • Arabuluculuk hizmetlerini yerine getirirler: ekipleri denetlemek, piyasa perspektifini analiz etmek, sigortalamak vb.
    • Dolandırıcılık ayarlayın.

    ICO'dan para kazanmak için gerçekten çok sayıda plan var. Ancak neredeyse hepsi ortalama bir kullanıcı için erişilemez. Geriye bir şey kalıyor - spekülasyon.

    Tokenlardan kazanmanın artıları ve eksileri

    Tokenlardan kazanmanın avantajları:

    • Yüksek varlıklar.
    • Büyük kâr.
    • Sürekli fiyat değişimi.
    • Çok sayıda gelecek vaat eden proje.

    Tüm artılar pazarın aktif olarak gelişmekte olduğu gerçeğine iniyor. Gelecekte çok para kazandırabilecek birçok iddialı proje var. Ve her kullanıcının ilginç bir token satın alabileceğiniz borsaya erişimi var.

    Eksileri:

    • Yüksek riskler.
    • Kazançları tahmin edememe.
    • Piyasada düzenleyicilerin bulunmaması.
    • Mevzuatta istikrarsız bir durum.

    Bu, çılgın risklerin olduğu ve düzenleme eksikliğinin olduğu bir piyasa, bu da büyük sermayeye sahip herhangi bir kişinin tek bir hareketle oranı istediği gibi çökebileceği veya artırabileceği anlamına geliyor.

    Rusça konuşulan kesim için bir eksi daha var. Tokenlarla ilgili bilgilerin çoğu İngilizcedir: şirket web siteleri, sunumlar, analistlerin bilgileri ve görüşleri.

    Yabancı kripto milyoner örneklerine bakmak yeterli. Bir zamanlar eğlenceden başka bir şey gibi görünmeyen bir projeye yatırım yaptılar. Üstelik insanlar küçük miktarlarda yatırım yaptılar ve bu, son 9 yılda 10.000 kattan fazla büyümeyle büyük karlar sağladı. Birçok kripto milyoneri, alınan miktarlarla ne yapacağını bilmiyor. İnternetin yabancı segmentinde buna benzer pek çok örnek var.

    Tokenlar, kolayca ve hızlı bir şekilde (2-3 yıl içinde) net kârın %1000'ine kadar kazanabileceğiniz, gelecek vaat eden, hızlı büyüyen bir pazardır. Ancak aynı zamanda son derece risklidir.

    Hangi tokenlar umut verici

    Hangi tokenlerin umut verici olabileceğini anlamak için en popüler kripto para birimlerinin 5 örneğine bakalım ve kullanıcıların neden bunlarla ilgilendiğini anlamaya çalışalım.

    bitcoin- dünyanın ilk kripto para birimi. Bankalar ve küresel ödeme sistemleri şeklindeki aracıları “Kullanıcı-Para-Kullanıcı” planının dışında bırakarak, insanların anonim olarak işlem yapmasına olanak tanıdı. Ödemelere tamamen yeni bir yaklaşım.

    Ethereum Bitcoin'in bazı yönlerini geliştirdi. İhraç edilen para birimi miktarındaki 21 milyonluk sınır kaldırıldı, blokların oluşturulması arasındaki süre kısaltıldı ve işlemlerin onaylanması için daha güvenilir bir sistem oluşturuldu. Ancak bu en önemli şey değil. Bu kripto para biriminin popülaritesi, insan faktörünü "Sözleşmenin imzalanması - Aracı - Koşulların kontrol edilmesi - Sözleşmenin yürütülmesi" zincirinden tamamen dışlayan akıllı sözleşmeler sistemi tarafından sağlandı.

    Artık "aracı" rolü otomatik bir sistem tarafından yerine getiriliyor; bu da gerçek iş için doğrudan bir fayda sağlıyor.

    Dalgalanma- tamamen kendi koduyla oluşturuldu. İşlem zincirinin hemen hemen tüm bağlantılarını hariç tutmanıza olanak tanır. Başlangıçta sistem, banka transferlerinde maliyet tasarrufu sağlamak amacıyla tasarlandı. Maliyetleri %70 oranında azaltmanıza olanak tanır.

    Litecoin- kodunda oluşturulan Bitcoin'e bir alternatif. Diğerleri gibi, kaynak kodunu kullanarak, bitcoin sisteminin mevcut sürümünü "yükseltmeye" mümkün olan her yolu deniyor. En önemli artısı, Bitcoin için 10 blok sayısına karşılık her 2,5 dakikada bir blok sayısının oluşturulmasıdır. Daha hızlı işlemlere olanak sağlar. Kripto para biriminin çıkarılması için bilgisayarın RAM kaynakları kullanılır.

    Madenciler için doğrudan fayda. Diğer kaynaklar kripto para birimi madenciliği için kullanılır.

    kısa çizgi Bitcoin'in kaynak kodunda da tek bir farkla yazıyor: Kripto para biriminin tam bir anonimliği var. Bitcoin'de cüzdanın sahibini bulabilir ve onun tüm işlemlerini takip edebilirsiniz. Eğer tüm nihai varış noktalarını biliyorsanız, operasyonların tüm resmini görebilirsiniz. Dash kripto para sisteminde böyle bir şey yok: işlemler kamuya açık alanda yayınlanmıyor. Cüzdanın sahibini bilseniz bile kime ve ne gönderdiğini asla bilemezsiniz.

    Anonim ödeme yapanlar için doğrudan fayda. İşlem bilgisi yok.

    Gördüğümüz gibi tokenların popülaritesinin kendine has sebepleri var. Bu kripto para birimlerinin her biri, temel kategorilerden birinin ömrünü iyileştirdi. Bitcoin herkes içindir, Ether işadamları içindir, Ripple bankalar içindir, Litecoin madenciler içindir ve Dash anonimliğe ihtiyaç duyan insanlar içindir.

    Tokenlardan kazanmaya ilişkin görüşler

    Tokenlardan elde edilen kazançlar buna benzer. Aynı özelliklere sahiptirler:

    • Yüksek oynaklık.
    • Tahmin edilemezlik.
    • Dünya olaylarına bağımlılık.
    • Her bir oyuncudan bağımsızlık.

    Ancak döviz kuru farklı ülkelerin Merkez Bankaları tarafından kısıtlanan gerçek para biriminin aksine, tokenlerin herhangi bir sınırlayıcısı yoktur. Mevcut oranları etkileyen tek araç taleptir: ne kadar çok insan madeni paralarla ilgilenirse maliyeti de o kadar yüksek olur. Bundan şöyle bir sonuç çıkarılabilir:

    Belki yakında kripto para piyasasını düzenleyecek, ICO aşamasında hileli ve gelecek vaad etmeyen projeleri önleyecek araçlar ortaya çıkacak. Ancak bugün pek çok "aptal", dolandırıcı ve gerçekten çok az değerli proje var.

    Kripto para spekülasyon için ideal bir araçtır. En iyi coinlerin çoğunun oranları her dakika değişir. Ve gün boyunca kursa hem +% 3-5 hem de -% 3-5 gözlemleyebilirsiniz.

    ICO'lara yatırım yaparak para kazanmak çok risklidir.

    Piyasa göstergelerine veya grafiklere güvenmeniz gerekecek çünkü sayfayı yenilediğiniz anda bunlar değişecek, sezgilere güveneceksiniz. Madalyonun talep edilip edilmeyeceğini, nerede kullanılabileceğini, neden gerekli olduğunu, alternatiflerin olup olmadığını açıkça anlamalısınız.

    Çözüm

    Tokenlar, para birimiyle nasıl çalışılacağını bilenler için para kazanmanın umut verici bir yolu olmaya devam ediyor. Yatırımlar, tahminler, analizler - bunların hepsi gerçekten büyük meblağlar kazanmak için gereklidir. Bilgi ve beceri olmadan bu piyasada hiçbir şey kazanamazsınız.

    cURL, URL sözdizimini kullanarak dosya ve verileri aktarmak için tasarlanmış özel bir araçtır. Bu teknoloji HTTP, FTP, TELNET ve diğerleri gibi birçok protokolü destekler. cURL başlangıçta bir komut satırı aracı olarak tasarlandı. Şanslıyız ki cURL kütüphanesi PHP programlama dili tarafından destekleniyor. Bu yazıda bazı gelişmiş cURL özelliklerine bakacağız ve aynı zamanda PHP kullanarak edinilen bilgilerin pratik uygulamasına da değineceğiz.

    Neden cURL?

    Aslında bir web sayfasının içeriğini getirmenin pek çok alternatif yolu vardır. Çoğu durumda, çoğunlukla tembellik nedeniyle cURL yerine basit PHP işlevlerini kullandım:

    $content = file_get_contents("http://www.nettuts.com"); // veya $satırlar = dosya("http://www.nettuts.com"); // veya readfile("http://www.nettuts.com");

    Ancak bu işlevler neredeyse hiç esnekliğe sahip değildir ve hata yönetimi vb. açılardan çok sayıda eksiklik içerir. Ayrıca, bu standart işlevlerle çözemeyeceğiniz bazı görevler de vardır: çerezlerle etkileşimde bulunmak, kimlik doğrulama, form gönderme, dosya yükleme vb.

    cURL, birçok farklı protokolü, seçeneği destekleyen ve URL istekleri hakkında ayrıntılı bilgi sağlayan güçlü bir kitaplıktır.

    Basit yapı

    • Başlatma
    • Parametrelerin atanması
    • Yürütme ve sonucu getirme
    • Belleği boşaltma

    // 1. başlatma $ch = curl_init(); // 2. url curl_setopt($ch, CURLOPT_URL, "http://www.nettuts.com"); dahil parametreleri belirtin curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); // 3. sonuç olarak HTML'yi alın $output = curl_exec($ch); // 4. bağlantıyı kapatın curl_close($ch);

    2. Adım (yani, curl_setopt()'un çağrılması), bu makalede diğer tüm adımlardan çok daha fazla tartışılacaktır, çünkü. bu aşamada bilmeniz gereken en ilginç ve faydalı şeylerin tümü gerçekleşir. Bir URL isteğini en kapsamlı şekilde yapılandırabilmek için cURL'de belirtilmesi gereken çok sayıda farklı seçenek vardır. Listenin tamamını bir bütün olarak ele almayacağız, yalnızca bu ders için gerekli ve yararlı olduğunu düşündüğüm şeylere odaklanacağız. Bu konu ilginizi çekiyorsa diğer her şeyi kendiniz keşfedebilirsiniz.

    Hata Kontrolü

    Ayrıca bir işlemin başarılı olup olmadığını test etmek için koşullu ifadeleri de kullanabilirsiniz:

    // ... $çıkış = curl_exec($ch); if ($output === YANLIŞ) ( echo "cURL Hatası: " . curl_error($ch); ) // ...

    Burada kendiniz için çok önemli bir noktaya dikkat etmenizi rica ediyorum: Karşılaştırma için “== false” yerine “=== false” kullanmalıyız. Bilmeyenler için bu, boş sonuç ile hataya işaret eden yanlış boole değeri arasında ayrım yapmamıza yardımcı olacaktır.

    Bilginin alınması

    Diğer bir ek adım, yürütüldükten sonra cURL isteği hakkında veri almaktır.

    // ... curl_exec($ch); $bilgi = curl_getinfo($ch); echo "Aldı". $info["toplam_zaman"] . "url için saniye". $bilgi["url"]; // ...

    Döndürülen dizi aşağıdaki bilgileri içerir:

    • "url"
    • "içerik türü"
    • http_kodu
    • “başlık_boyutu”
    • "istek_boyutu"
    • “dosya zamanı”
    • “ssl_verify_result”
    • “yönlendirme_sayımı”
    • "toplam zaman"
    • “adarama_zamanı”
    • “bağlantı_zamanı”
    • "transfer_öncesi_zamanı"
    • "size_upload"
    • size_download
    • “hız_indirme”
    • “hız_yükleme”
    • "download_content_length"
    • “upload_content_length”
    • "transfer_zamanını başlat"
    • "yönlendirme_zamanı"

    Tarayıcıya bağlı olarak yönlendirme tespiti

    Bu ilk örnekte, çeşitli tarayıcı ayarlarına göre URL yönlendirmelerini tespit edebilen kod yazacağız. Örneğin, bazı web siteleri bir cep telefonunun veya başka bir cihazın tarayıcılarını yönlendirir.

    Kullanıcının tarayıcı adı ve mevcut diller de dahil olmak üzere giden HTTP başlıklarımızı belirlemek için CURLOPT_HTTPHEADER seçeneğini kullanacağız. Sonunda hangi sitelerin bizi farklı URL'lere yönlendirdiğini belirleyebileceğiz.

    // URL'yi test et $url'ler = dizi("http://www.cnn.com", "http://www.mozilla.com", "http://www.facebook.com"); // tarayıcıları test etmek $browsers = array("standard" => array ("user_agent" => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5 .6 (.NET CLR 3.5.30729)", "language" => "en-us,en;q=0.5"), "iphone" => dizi ("user_agent" => "Mozilla/5.0 (iPhone; U) ; Mac OS X gibi CPU; tr) AppleWebKit/420+ (KHTML, Gecko gibi) Versiyon/3.0 Mobile/1A537a Safari/419.3", "language" => "en"), "fransızca" => dizi ("user_agent" => "Mozilla/4.0 (uyumlu; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 2.0.50727)", "language" => "fr,fr-FR;q=0.5")); foreach ($url olarak $url) ( echo "URL: $url\n"; foreach ($tarayıcı olarak $test_name => $tarayıcı) ( $ch = curl_init(); // url'yi belirtin curl_setopt($ch, CURLOPT_URL, $url); // tarayıcı başlıklarını ayarlayın curl_setopt($ch, CURLOPT_HTTPHEADER, array("User-Agent: ($browser["user_agent"])", "Accept-Language: ($browser["language"])" ) ); // sayfa içeriğine ihtiyacımız yok curl_setopt($ch, CURLOPT_NOBODY, 1); // HTTP başlıklarını almamız gerekiyor curl_setopt($ch, CURLOPT_HEADER, 1); // çıktı yerine sonuçları döndür curl_setopt($ch) , CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); // Bir HTTP yönlendirmesi var mıydı? if (preg_match("!Location: (.*)!", $output, $matches) ) ( echo " $test_name: $eşleşmelere yönlendirir\n"; ) else ( echo "$test_name: yönlendirme yok\n"; ) ) echo "\n\n"; )

    Öncelikle kontrol edeceğimiz sitelerin URL'lerinin bir listesini belirliyoruz. Daha doğrusu bu sitelerin adreslerine ihtiyacımız var. Daha sonra bu URL'lerin her birini test etmek için tarayıcı ayarlarını tanımlamamız gerekiyor. Bundan sonra elde edilen tüm sonuçların üzerinden geçeceğimiz bir döngü kullanacağız.

    Bu örnekte cURL ayarlarını yapmak için kullandığımız hile, sayfanın içeriğini değil, yalnızca HTTP başlıklarını ($output'ta saklanan) almamıza olanak tanıyacaktır. Daha sonra, basit bir normal ifade kullanarak, alınan başlıklarda "Konum:" dizisinin mevcut olup olmadığını belirleyebiliriz.

    Bu kodu çalıştırdığınızda şöyle bir şey elde etmelisiniz:

    Belirli bir URL'ye POST isteğinde bulunma

    Bir GET isteği oluşturulurken iletilen veriler bir "sorgu dizisi" aracılığıyla URL'ye aktarılabilir. Örneğin, bir Google araması yaptığınızda arama terimi yeni URL'nin adres çubuğuna yerleştirilir:

    http://www.google.com/search?q=ruseller

    Bu isteği simüle etmek için cURL kullanmanıza gerek yoktur. Sonunda tembellik sizi yenerse, sonucu almak için “file_get_contents ()” işlevini kullanın.

    Ancak sorun şu ki, bazı HTML formları POST istekleri gönderir. Bu formların verileri önceki durumda olduğu gibi değil, HTTP isteğinin gövdesi aracılığıyla aktarılır. Örneğin, bir forumda bir form doldurduysanız ve arama düğmesine tıkladıysanız, büyük olasılıkla bir POST isteği yapılacaktır:

    http://codeigniter.com/forums/do_search/

    Bu tür bir URL isteğini simüle edebilecek bir PHP betiği yazabiliriz. Öncelikle POST verilerini kabul etmek ve görüntülemek için basit bir dosya oluşturalım. Buna post_output.php adını verelim:

    Print_r($_POST);

    Daha sonra cURL isteğini yürütmek için bir PHP betiği oluşturuyoruz:

    $url = "http://localhost/post_output.php"; $post_data = array("foo" => "bar", "query" => "Nettuts", "action" => "Gönder"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // bir POST isteğimiz olduğunu belirtin curl_setopt($ch, CURLOPT_POST, 1); // değişkenleri ekleyin curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $çıkış = curl_exec($ch); curl_close($ch); echo $çıkış;

    Bu betiği çalıştırdığınızda benzer bir sonuç elde etmelisiniz:

    Böylece, POST isteği post_output.php betiğine gönderildi ve bu komut dosyası da içeriğini cURL kullanarak elde ettiğimiz $_POST süper küresel dizisinin çıktısını aldı.

    Dosya yükleme

    Öncelikle bir dosya oluşturup onu upload_output.php dosyasına gönderelim:

    Print_r($_FILES);

    Ve işte yukarıdaki işlevselliği gerçekleştiren komut dosyası kodu:

    $url = "http://localhost/upload_output.php"; $post_data = array ("foo" => "bar", // yüklenecek dosya "upload" => "@C:/wamp/www/test.zip"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $çıkış = curl_exec($ch); curl_close($ch); echo $çıkış;

    Bir dosya yüklemek istediğinizde tek yapmanız gereken, onu önüne @ sembolü gelecek şekilde normal bir gönderi değişkeni olarak iletmektir. Yazılı betiği çalıştırdığınızda aşağıdaki sonucu alırsınız:

    Çoklu cURL

    cURL'nin en güçlü yönlerinden biri "birden fazla" cURL işleyicisi oluşturma yeteneğidir. Bu, aynı anda ve eşzamansız olarak birden fazla URL'ye bağlantı açmanıza olanak tanır.

    cURL isteğinin klasik versiyonunda, betiğin yürütülmesi askıya alınır ve URL isteği işleminin tamamlanması beklenir, bundan sonra betik devam edebilir. Çok sayıda URL ile etkileşime girmeyi düşünüyorsanız, klasik durumda aynı anda yalnızca bir URL ile çalışabileceğiniz için bu oldukça zaman alıcı olacaktır. Ancak özel işleyiciler kullanarak bu durumu düzeltebiliriz.

    Php.net'ten aldığım kod örneğine bir göz atalım:

    // bazı cURL kaynakları oluşturun $ch1 = curl_init(); $ch2 = curl_init(); // URL'yi ve diğer parametreleri belirtin curl_setopt($ch1, CURLOPT_URL, "http://lxr.php.net/"); curl_setopt($ch1, CURLOPT_HEADER, 0); curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/"); curl_setopt($ch2, CURLOPT_HEADER, 0); //çoklu bir cURL işleyicisi oluşturun $mh = curl_multi_init(); //birden fazla işleyici ekleme curl_multi_add_handle($mh,$ch1); curl_multi_add_handle($mh,$ch2); $aktif = boş; //yürütme do ( $mrc ​​= curl_multi_exec($mh, $active); ) 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); )) ) //kapat curl_multi_remove_handle($mh, $ch1); curl_multi_remove_handle($mh, $ch2); curl_multi_close($mh);

    Buradaki fikir, birden fazla cURL işleyicisini kullanabilmenizdir. Basit bir döngü kullanarak hangi isteklerin henüz tamamlanmadığını takip edebilirsiniz.

    Bu örnekte iki ana döngü bulunmaktadır. İlk do-while döngüsü curl_multi_exec() fonksiyonunu çağırır. Bu özellik engellemez. Olabildiğince hızlı çalışır ve isteğin durumunu döndürür. Döndürülen değer 'CURLM_CALL_MULTI_PERFORM' sabiti olsa da bu, işin henüz tamamlanmadığı anlamına gelir (örneğin, URL'deki http üstbilgileri şu anda gönderiliyor); Bu nedenle farklı bir sonuç elde edene kadar bu dönüş değerini kontrol etmeye devam ediyoruz.

    Bir sonraki döngüde $active = "true" iken koşulu kontrol ediyoruz. curl_multi_exec() fonksiyonunun ikinci parametresidir. Bu değişkenin değeri, mevcut değişikliklerden herhangi biri etkin olduğu sürece "true" olacaktır. Daha sonra curl_multi_select() fonksiyonunu çağırıyoruz. En az bir aktif bağlantı olduğu sürece, bir yanıt alınana kadar yürütülmesi "engellenir". Bu olduğunda istekleri yürütmeye devam etmek için ana döngüye döneriz.

    Şimdi öğrendiklerimizi çok sayıda insanın gerçekten işine yarayacak bir örnekle uygulayalım.

    WordPress’teki Bağlantıları Kontrol Etme

    Her biri harici İnternet kaynaklarına bağlantılar içeren çok sayıda gönderi ve mesaj içeren bir blog hayal edin. Bu bağlantılardan bazıları çeşitli nedenlerden dolayı zaten "ölü" olabilir. Belki sayfa silinmiştir veya site hiç çalışmıyordur.

    Tüm bağlantıları ayrıştıracak, yüklenmeyen web sitelerini ve 404 sayfayı bulacak ve ardından bize çok ayrıntılı bir rapor sunacak bir komut dosyası oluşturacağız.

    Bunun WordPress için bir eklenti oluşturma örneği olmadığını hemen söyleyeceğim. Bu bizim için hemen hemen her şey için iyi bir test alanıdır.

    Sonunda başlayalım. Öncelikle veritabanındaki tüm bağlantıları getirmeliyiz:

    // yapılandırma $db_host = "localhost"; $db_user = "kök"; $db_pass = ""; $db_name = "wordpress"; $hariç tutulan_alanlar = array("localhost", "www.mydomain.com"); $max_connections = 10; // değişken başlatma $url_list = dizi(); $working_urls = dizi(); $dead_urls = dizi(); $not_found_urls = dizi(); $aktif = boş; // MySQL'e bağlanın if (!mysql_connect($db_host, $db_user, $db_pass)) ( die("Bağlantı kurulamadı: " . mysql_error()); ) if (!mysql_select_db($db_name)) ( die("Olabilir db seçmeyin: " . mysql_error()); ) // bağlantıları olan tüm yayınlanmış gönderileri seçin $q = "wp_posts'tan post_content SEÇİN WHERE post_content LIKE "%href=%" AND post_status = "publish" AND post_type = "post "" ; $r = mysql_query($q) veya die(mysql_error()); while ($d = mysql_fetch_assoc($r)) ( // bağlantıları normal ifadeler kullanarak getir if (preg_match_all("!href=\"(.*?)\"!", $d["post_content"], $ eşleşiyor) ) ( foreach ($url olarak $eşleşir) ( $tmp = ayrıştırma_url($url); if (in_array($tmp["ana bilgisayar"], $hariç tutulan_alanlar)) ( devam et; ) $url_list = $url; ) ) ) / / kopyaları kaldır $url_list = array_values(array_unique($url_list)); if (!$url_list) ( die("Kontrol edilecek URL yok"); )

    Öncelikle veritabanı ile etkileşim için konfigürasyon verilerini oluşturuyoruz, ardından kontrole katılmayacak alan adlarının bir listesini yazıyoruz ($excluded_domains). Ayrıca betiğimizde kullanacağımız maksimum eşzamanlı bağlantı sayısını karakterize eden bir sayı da tanımlarız ($max_connections). Daha sonra veritabanına katılıyoruz, bağlantıları içeren gönderileri seçiyoruz ve bunları bir dizide ($url_list) biriktiriyoruz.

    Aşağıdaki kod biraz karmaşık olduğundan baştan sona anlayın:

    // 1. çoklu işleyici $mh = curl_multi_init(); // 2. ($i = 0; $i) için çok sayıda URL ekleyin< $max_connections; $i++) { add_url_to_multi_handle($mh, $url_list); } // 3. инициализация выполнения do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); // 4. основной цикл while ($active && $mrc == CURLM_OK) { // 5. если всё прошло успешно if (curl_multi_select($mh) != -1) { // 6. делаем дело do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); // 7. если есть инфа? if ($mhinfo = curl_multi_info_read($mh)) { // это значит, что запрос завершился // 8. извлекаем инфу $chinfo = curl_getinfo($mhinfo["handle"]); // 9. мёртвая ссылка? if (!$chinfo["http_code"]) { $dead_urls = $chinfo["url"]; // 10. 404? } else if ($chinfo["http_code"] == 404) { $not_found_urls = $chinfo["url"]; // 11. рабочая } else { $working_urls = $chinfo["url"]; } // 12. чистим за собой curl_multi_remove_handle($mh, $mhinfo["handle"]); // в случае зацикливания, закомментируйте данный вызов curl_close($mhinfo["handle"]); // 13. добавляем новый url и продолжаем работу if (add_url_to_multi_handle($mh, $url_list)) { do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); } } } } // 14. завершение curl_multi_close($mh); echo "==Dead URLs==\n"; echo implode("\n",$dead_urls) . "\n\n"; echo "==404 URLs==\n"; echo implode("\n",$not_found_urls) . "\n\n"; echo "==Working URLs==\n"; echo implode("\n",$working_urls); function add_url_to_multi_handle($mh, $url_list) { static $index = 0; // если у нас есть ещё url, которые нужно достать if ($url_list[$index]) { // новый curl обработчик $ch = curl_init(); // указываем url curl_setopt($ch, CURLOPT_URL, $url_list[$index]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_NOBODY, 1); curl_multi_add_handle($mh, $ch); // переходим на следующий url $index++; return true; } else { // добавление новых URL завершено return false; } }

    Burada her şeyi raflara koymaya çalışacağım. Listedeki sayılar yorumdaki sayılara karşılık gelir.

    1. 1. Çoklu işleyici oluşturun;
    2. 2. add_url_to_multi_handle() fonksiyonunu biraz sonra yazacağız. Her çağrıldığında yeni bir URL işlenecektir. Başlangıçta 10 ($max_connections) URL ekliyoruz;
    3. 3. Başlamak için curl_multi_exec() fonksiyonunu çalıştırmalıyız. CURLM_CALL_MULTI_PERFORM döndürdüğü sürece hâlâ yapacak işlerimiz var. Buna esas olarak bağlantı oluşturmak için ihtiyacımız var;
    4. 4. Daha sonra, en az bir aktif bağlantımız olduğu sürece yürütülecek olan ana döngü gelir;
    5. 5. curl_multi_select() URL aramasının tamamlanmasını beklerken takılı kalıyor;
    6. 6. Bir kez daha, bazı işler yapmak için, yani döndürülen yanıt verilerini almak için cURL'ye ihtiyacımız var;
    7. 7. Bilgiler burada doğrulanıyor. İstek sonucunda bir dizi döndürülecektir;
    8. 8. Döndürülen dizi bir cURL işleyicisi içerir. Belirli bir cURL isteği hakkında bilgi almak için kullanacağımız şey budur;
    9. 9. Bağlantı ölmüşse veya betiğin süresi dolmuşsa herhangi bir http kodu aramamalıyız;
    10. 10. Bağlantı bize 404 sayfasını döndürdüyse, http kodu 404 değerini içerecektir;
    11. 11. Aksi takdirde önümüzde çalışan bir bağlantımız var. (Hata kodu 500 vb. için ek kontroller ekleyebilirsiniz);
    12. 12. Daha sonra cURL işleyicisini kaldırıyoruz çünkü artık ona ihtiyacımız yok;
    13. 13. Artık başka bir URL ekleyip daha önce konuştuğumuz her şeyi çalıştırabiliriz;
    14. 14. Bu adımda script işini bitirir. İhtiyacımız olmayan her şeyi kaldırıp bir rapor oluşturabiliriz;
    15. 15. Sonunda handler’a url ekleyecek bir fonksiyon yazacağız. Bu fonksiyon her çağrıldığında $index statik değişkeni artırılacaktır.

    Bu betiği blogumda kullandım (test etmek için bazı bozuk bağlantılar eklendi) ve aşağıdaki sonucu aldım:

    Benim durumumda, betiğin 40 URL'yi çalıştırması 2 saniyenin biraz altında sürdü. Daha fazla URL ile uğraşırken performans kazancı önemlidir. Aynı anda on bağlantı açarsanız komut dosyası on kat daha hızlı çalışabilir.

    Diğer kullanışlı cURL seçenekleri hakkında birkaç söz

    HTTP Kimlik Doğrulaması

    URL'de HTTP kimlik doğrulaması varsa aşağıdaki komut dosyasını kolayca kullanabilirsiniz:

    $url = "http://www.bazısite.com/üyeler/"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // kullanıcı adı ve şifreyi belirtin curl_setopt($ch, CURLOPT_USERPWD, "kullanıcı adım:şifrem"); // yönlendirmeye izin veriliyorsa curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // sonra verilerimizi cURL'ye kaydedin curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, 1); $çıkış = curl_exec($ch); curl_close($ch);

    FTP yükleme

    PHP'nin ayrıca FTP ile çalışmak için bir kütüphanesi vardır, ancak burada cURL araçlarını kullanmanızı engelleyen hiçbir şey yoktur:

    // dosyayı aç $dosya = fopen("/dosyaya/yol/yol", "r"); // url'de şu içerik bulunmalıdır $url = "ftp://kullanıcı adı: [e-posta korumalı]:21/yol/giden/yeni/dosya"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_UPLOAD, 1); curl_setopt($ch, CURLOPT_INFILE, $fp); curl_setopt($ch, CURLOPT_INFILESIZE, dosya boyutu("/dosya/yol/dosya")); // ASCII modunu belirtin curl_setopt($ch, CURLOPT_FTPASCII, 1); $output = curl_exec ($ch); curl_close($ch);

    Proxy Kullanma

    URL isteğinizi bir proxy aracılığıyla yapabilirsiniz:

    $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://www.example.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // adresi belirtin curl_setopt($ch, CURLOPT_PROXY, "11.11.11.11:8080"); // kullanıcı adı ve şifre girmeniz gerekiyorsa curl_setopt($ch, CURLOPT_PROXYUSERPWD,"user:pass"); $çıkış = curl_exec($ch); curl_close($ch);

    Geri aramalar

    cURL isteği tamamlanmadan önce bile tetiklenecek bir işlevi belirlemek de mümkündür. Örneğin bir yanıtın içeriği yüklenirken verinin tamamen yüklenmesini beklemeden verileri kullanmaya başlayabilirsiniz.

    $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://net.tutsplus.com"); curl_setopt($ch, CURLOPT_WRITEFUNCTION,"ilerleme_işlevi"); curl_exec($ch); curl_close($ch); function ilerleme_işlevi($ch,$str) ( echo $str; return strlen($str); )

    Böyle bir işlevin, bir gereklilik olan dizenin uzunluğunu döndürmesi ZORUNLUDUR.

    Çözüm

    Bugün cURL kütüphanesini kendi bencil amaçlarınız için nasıl kullanabileceğinizi öğrendik. Umarım bu makaleyi beğenmişsinizdir.

    Teşekkür ederim! İyi günler!