Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: PHP. Асинхронный скрипт.  (Прочитано 3820 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
PHP. Асинхронный скрипт.
« : 11 Февраля 2017, 15:21:59 »
Решил написать скриптик, который с помощью vkapi ищет друзей у моих друзей и выдает мне список "друзей друзей" без моих друзей. Надеюсь что поняли эту тавтологию. Все работает медленно и я решил сделать некоторую часть кода асинхронной:
(Нажмите, чтобы показать/скрыть)
 

Пользователь добавил сообщение 11 Февраля 2017, 15:23:53:
и я не понимаю, как мне ждать потоки
« Последнее редактирование: 11 Февраля 2017, 15:23:53 от lexasub »

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #1 : 11 Февраля 2017, 16:16:49 »
lexasub, 1) вставляй код с помощью тега [​code] (набери сам а не копипасть) 2) не смешивай разные кодировки 3) как насчёт того чтоб взять язык в котором многопоточность из коробки, например golang, а не php?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #2 : 11 Февраля 2017, 16:33:32 »
lexasub, 1) вставляй код с помощью тега [​code] (набери сам а не копипасть) 2) не смешивай разные кодировки 3) как насчёт того чтоб взять язык в котором многопоточность из коробки, например golang, а не php?
1 - я с помощью тега [php] вставлял код
2- кодировки - знаю
3- go не знаю (можно на perl,но php я гораздо лучше знаю)

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #3 : 12 Февраля 2017, 01:25:02 »
lexasub, 1) я имею в виду на форум
3) golang достаточно прост. http://golang-book.ru/chapter-10-concurrency.html
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #4 : 12 Февраля 2017, 07:00:04 »
1)я написал "" [php*][*/php]
3)go я начал вчера изучать
Но у меня не получилось переписать код

Пользователь добавил сообщение 12 Февраля 2017, 10:11:32:
Кто-нибудь перепишите код с php на go(в Go я чайник).

Пользователь добавил сообщение 12 Февраля 2017, 14:43:26:
Накидал код с ошибками:
(Нажмите, чтобы показать/скрыть)
выдает
(Нажмите, чтобы показать/скрыть)
Что мне делать?

Пользователь добавил сообщение 12 Февраля 2017, 14:48:31:
Есть еще файл main.go, но я его не могу дебажить, т.к http.go является пакетом с ошибками
многопоточность еще не накладовал
« Последнее редактирование: 12 Февраля 2017, 14:48:31 от lexasub »

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #5 : 12 Февраля 2017, 20:39:40 »
lexasub, 1) указатели надо разыменовывать. http://golang-book.ru/chapter-08-pointers.html Напиши "*" перед именем указателя. 2) для того чтобы пройтись по элементам словаря(он же map) нужно две переменных: ключ и значение. Посмотри тут http://golang-book.ru/chapter-06-arrays-slices-maps.html 3) что ты пытаешься сделать со структурой? 4) для преобразование числа в строку есть itoa (int to ascii) http://stackoverflow.com/questions/10105935/how-to-convert-an-int-value-to-string-in-go. Не забывай разыменовывать указатели.

Пользователь добавил сообщение 12 Февраля 2017, 20:44:27:
И зачем в последней функции указатель?
« Последнее редактирование: 12 Февраля 2017, 20:44:27 от alsoijw »
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Komorebi

  • Активист
  • *
  • Сообщений: 479
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #6 : 13 Февраля 2017, 02:40:10 »
Многопоточность и асинхрон - вещи разные.
В пхп нету асинхрона.

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #7 : 13 Февраля 2017, 20:04:06 »
не все сделал(не все понял)
(Нажмите, чтобы показать/скрыть)

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #8 : 13 Февраля 2017, 21:56:53 »
lexasub, ошибки остались? Я не против подсказать если знаю, но самому искать ошибки лень.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #9 : 14 Февраля 2017, 09:43:55 »
скину

Пользователь добавил сообщение 14 Февраля 2017, 11:56:26:
43: cannot range over tmp (type struct { id int64; first_name string; last_name string; photo_100 string })
/usr/lib/go-1.6/src/goland-book/vkfriends/http/http.go:57: cannot use *id (type int64) as type int in argument to strconv.Itoa


Пользователь добавил сообщение 14 Февраля 2017, 15:28:30:
lexasub, ошибки остались? Я не против подсказать если знаю, но самому искать ошибки лень.
43: cannot range over tmp (type struct { id int64; first_name string; last_name string; photo_100 string })
/usr/lib/go-1.6/src/goland-book/vkfriends/http/http.go:57: cannot use *id (type int64) as type int in argument to strconv.Itoa
« Последнее редактирование: 14 Февраля 2017, 15:28:30 от lexasub »

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #10 : 14 Февраля 2017, 15:56:08 »
lexasub, для того чтобы обратится к полям структуры не нужно писать range. просто напиши имя переменной структуры, точка, имя поля. Не понятно действие в 43 строке - если переменная str ничего не содержит, то зачем писать += ? По поводу второй ошибки http://stackoverflow.com/questions/12219911/strconv-itoa641234-gives-undefined-in-golang
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #11 : 14 Февраля 2017, 16:29:06 »

Пользователь добавил сообщение 14 Февраля 2017, 16:29:39:
lexasub, для того чтобы обратится к полям структуры не нужно писать range. просто напиши имя переменной структуры, точка, имя поля. Не понятно действие в 43 строке - если переменная str ничего не содержит, то зачем писать += ? По поводу второй ошибки http://stackoverflow.com/questions/12219911/strconv-itoa641234-gives-undefined-in-golang
(Нажмите, чтобы показать/скрыть)

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #12 : 14 Февраля 2017, 17:34:26 »
lexasub, map перебираешь с помощью range, как в предыдущем варианте. for k := range *mymap {в случае со структурой выглядеть будет как-то такreturn users.response.id+" "+users.response.first_name+" "+users.response.last_name+"<img src='"+users.response.photo_100+"'>"+":"+ids[users.response.id]+"</br>"Прочитай и выполни все уроки в руководстве о котором я писал выше.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн lexasub

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #13 : 15 Февраля 2017, 12:48:15 »
return users.response.id+" "+users.response.first_name+" "+users.response.last_name+"<img src='"+users.response.photo_100+"'>"+":"+ids[users.response.id]+"</br>"
вы неправильно наверно меня поняли. Вот что выдает сервер:
{
"response": [{
  "id": 210700286,
  "first_name": "Lindsey",
  "last_name": "Stirling",
  "photo_100": "https://pp.vk.me/...a74/eS6d5nIw-Os.jpg"
}, {
  "id": 1,
  "first_name": "Pavel",
  "last_name": "Durov",
  "photo_100": "https://pp.vk.me/...542/fcMCbfjDsv0.jpg"
}]
}
и мне надо перебирать пользователей и выводить строку для каждого пользователя

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: PHP. Асинхронный скрипт.
« Ответ #14 : 15 Февраля 2017, 15:12:23 »
lexasub, я понял код а не то что ты пытаешься делать. Если у тебя несколько пользователей, то тогда объяви массив пользователей. У тебя в данный момент users это просто переменная(емнип в перле их называют скаляром). https://gobyexample.com/json http://stackoverflow.com/questions/25465566/golang-parse-json-array-into-data-structure
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

 

Страница сгенерирована за 0.059 секунд. Запросов: 25.