PHP file_get_contents Превышено максимальное время выполнения (Причина эмоций?)

Я начал возиться со Steam API немного назад и сделал простой сайт, показывающий информацию о профиле, используя метод GetPlayerSummaries. Он отлично работал, пока некоторые из моих друзей не начали добавлять смайлики iOS к своему имени, что приводит к следующему:

Неустранимая ошибка: превышено максимальное время выполнения 300 секунд в файле в строке 137.

Вот что находится в этой строке в файле:

public function getPlayerSummary($steamid) {
    $contents = file_get_contents( "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=".SteamAPI_APIKey."&steamids=".$steamid );
    $json = json_decode($contents, true);

    foreach($json['response']['players'] as $key => $value) {
        ...
    }
}

(Это в функции, $steamid определяется при вызове функции)

Это должно вернуть (JSON):

{
"response": {
    "players": [
        {
            "steamid": "_removed_",
            "communityvisibilitystate": 3,
            "profilestate": 1,
            "personaname": "_removed_ ????",
            "lastlogoff": 1426734965,
            "profileurl": "http://steamcommunity.com/id/_removed_/",
            "avatar": "_removed_",
            "avatarmedium": "_removed_",
            "avatarfull": "_removed_",
            "personastate": 0,
            "realname": "_removed_",
            "primaryclanid": "_removed_",
            "timecreated": 1349251405,
            "personastateflags": 0,
            "loccountrycode": "DE"
        }
    ]

}

}

Но «????» в имени персонажа все портит, так как оно работает для всех остальных без него :/ Это эмоция-призрак, то же самое происходит с другим другом, использующим эмоцию обезьяны в своем имени.

Кто-нибудь знает, как я могу это решить?


person Michael    schedule 19.03.2015    source источник
comment
Пожалуйста, опубликуйте больше кода, я не думаю, что file_get_contents вызывает это (PHP не очень хорошо сообщает об ошибках), я предполагаю, что json_decode не может анализировать странные символы, вы можете замените не символы utf-8 в содержимом, а затем json_decode строку   -  person Bogdan Kuštan    schedule 19.03.2015
comment
Добавлено немного больше, хотя наличие в функции ничего, кроме file_get_contents, все равно вызывает это :/   -  person Michael    schedule 19.03.2015
comment
Что произойдет, если вы попытаетесь прочитать файл char за char? pastebin.com/Qr7RxvHW   -  person Bogdan Kuštan    schedule 19.03.2015
comment
Это работает! Установка кодировки на UTF-8 превращает эмоцию в квадрат (и в настоящую эмоцию на моем телефоне). Должен ли я использовать это, а затем json_decode, или это плохая идея?   -  person Michael    schedule 19.03.2015
comment
Как насчет: pastebin.com/9FTEsjYY чтение файла char за char - не очень хорошая идея :)   -  person Bogdan Kuštan    schedule 19.03.2015
comment
Тоже работает, тот же результат :) РЕДАКТИРОВАТЬ: что-то не так... использование file_get_contents также работает, когда оно находится в отдельном файле:/ Хм   -  person Michael    schedule 19.03.2015
comment
Не помещайте его в файл, читайте URL-адрес формы :)   -  person Bogdan Kuštan    schedule 19.03.2015
comment
Взгляните: pastebin.com/FtQetQ2E. Кстати, вы думаете, мы можем найти другое место для общения? (У меня недостаточно репо, чтобы поболтать здесь: P) РЕДАКТИРОВАТЬ: Я ИДИОТ, Я ДОЛЖЕН ИСПОЛЬЗОВАТЬ PRINT_R .... тогда он работает нормально, сумасшедший. Но все еще не в моей функции   -  person Michael    schedule 19.03.2015
comment
гугл-тусовка [email protected]   -  person Bogdan Kuštan    schedule 19.03.2015


Ответы (2)


поместите следующую строку вверху файла php,

ini_set("max_execution_time", 0);
person Ayyanar G    schedule 19.03.2015
comment
Я не уверен, как это поможет моему делу? Это приведет к тому, что страница никогда не загрузится, ха-ха - person Michael; 19.03.2015
comment
вы можете сделать это в php.ini - person Ayyanar G; 19.03.2015
comment
Да, я знаю, но как это поможет? :/ Я сделал это, и он просто никогда не загружается - person Michael; 19.03.2015

Примечание:

Если вы открываете URI со специальными символами, такими как пробелы, вам необходимо закодировать URI с помощью urlencode().

http://php.net/manual/en/function.file-get-contents.php

person Mike    schedule 04.06.2018