Задать вопрос
https://dev256.com/
Контакты

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (10)

Лучшие ответы пользователя

Все ответы (7)
  • Как программно скачать файл с Яндекс.Диск?

    вот пример реализации на php:

    function get_stat( $url, $headers )
    {
        $handle = curl_init();
        curl_setopt( $handle, CURLOPT_URL, $url );
        curl_setopt( $handle, CURLOPT_HTTPHEADER, $headers );
        curl_setopt( $handle, CURLOPT_SSL_VERIFYPEER, false );
        curl_setopt( $handle, CURLOPT_SSL_VERIFYHOST, false );
        curl_setopt( $handle, CURLOPT_RETURNTRANSFER, true );
        $response = curl_exec( $handle );
        $code = curl_getinfo( $handle, CURLINFO_HTTP_CODE );
        return array( "code" => $code, "response" => $response );
    }
    
    $url_yandex_disk = "https://yadi.sk/i/byMUqoSLiw3Ki";
    
    $result = get_stat( "https://cloud-api.yandex.net:443/v1/disk/public/resources/download?public_key=" . urlencode( $url_yandex_disk ), array() );
    if( $result["code"] == 200 )
    {
    	$result["response"] = json_decode( $result["response"], true );
    	echo '<a href="' . $result["response"]["href"] . '">Скачать</a>';
    }
    else
    {
    	echo "error";
    }


    а здесь работающий пример:
    https://getfile.dokpub.com/yandex/

    А здесь публикация и получение списка своих файлов на Яндекс диске:
    https://getfile.dokpub.com/yandex/publish/

    Для тех кто желает генерировать постоянно обновляемые ссылки передаваемые ,например в GET параметре, можно сделать так:

    $url_yandex_disk = $_GET["ya_url"];
    
    $result = get_stat( "https://cloud-api.yandex.net:443/v1/disk/public/resources/download?public_key=" . urlencode( $url_yandex_disk ), array() );
    if( $result["code"] == 200 )
    {
    	$result["response"] = json_decode( $result["response"], true );
    	header( "Location: " . $result["response"]["href"], true, 302 );
    	exit( 0 );
    }


    а вот на Питоне:
    import requests
    import pprint
    import urllib.parse
    
    targetUrl = "https://yadi.sk/i/03bE933n3PqpG2"
    url = "https://cloud-api.yandex.net/v1/disk/public/resources?public_key=" + urllib.parse.quote(targetUrl, safe="")
    
    responseData = requests.get(url)
    if responseData.headers["content-type"] in ["application/json; charset=utf-8", "application/json"]:
        print(pprint.pformat(responseData.json()))
    else:
        print(responseData)


    В некоторых случаях могут возникать ошибки.
    Ниже связанные вопросы с текущим ответом:
    Как правильно использовать прямую ссылку с Яндекс.диска?
    Ответ написан
    4 комментария
  • Оптимизация сайта под высокие нагрузки (php,nginx, mysql). Какие критерии доработок? Что необходимо сделать в первую очередь?

    Скорее всего эта проблема связана с БД. Вероятно есть SQL запросы, которые плохо оптимизированы под эту задачу. В этом случае тогда нужно оптимизировать запросы, возможно еще нужно создать индексы, возможно еще произвести тюнинг MySQL, увеличить некоторые буферы и другие настройки.

    Для оптимизации нужно:

    1. Нужно включить логирование медленных запросов. Много раз использовал эту методику для выявления узких запросов.
    После уже можно понять какие php файлы являются проблемными, и их исправить.
    Логирование медленных запросов включается так в разделе [mysqld] в файле my.cnf:
    slow_query_log      = 1
    slow_query_log_file = /var/log/mysql/slow.log
    long_query_time     = 1

    Анализ лог файла делается так:
    mysqldumpslow -s c -t 20 slow.log.1 > results.log

    2. Также может помочь утилита mysqltuner.pl. Многократно ее использовал для определения проблемных запросов, индексов, которые нужно добавить в таблицы, и других проблем с MySQL/MariaDB.

    3. Можно вручную провести анализ запросов при помощи EXPLAIN.

    4. Можно сделать замеры выполнения кода, как вручную, через логирование блоков кода, так и через XDebug. И выявить долго выполняющиеся блоки, после этого оптимизировать их.

    5. Кроме того нужно посмотреть процессы на сервере, которые занимают много процессорного времени и памяти, это можно сделать через atop или другие подобные утилиты. Можно на основании этого оптимизировать программный код и службы.

    6. То что MySQL и сам сервер находятся на виртуальной машине это тормозит работу сервера, виртуальные ноды в любом случае работают медленнее, чем физический сервер. Рекомендую перенести это все на физический сервер с NVMe дисками, с современным процессором и ОЗУ не менее 128 Гб.

    Могу помочь настроить логирование, анализ этого и выявить узкие места.
    Ответ написан
    Комментировать
  • Как грамотнее сделать личный кабинет с финансовым балансом пользователя?

    Готовых решений нет, вам скорее всего самому придется написать Личный Кабинет, биллинг, систему уведомлений и т.д.
    Ответ написан
    Комментировать
  • Яндекс поиск редиректит на сайт из поиска через http протокол, а не через https, правильно и безопасно ли это?

    nrr
    @nrr Автор вопроса
    UPDATE 2018.06.28

    Яндекс подтвердил, что такие механизмы небезопасны, и что они занимаются устранением этой проблемы.
    Ответ написан
    1 комментарий

Лучшие вопросы пользователя

Все вопросы (1)