Какое поведение вы ожидаете? Вызов system ('notepad')
работает отлично - он просто не отображает графический интерфейс. Он работает в фоновом режиме, и PHP сидит там терпеливо, ожидая, когда блокнот закроется (и только продолжит, если вы убьете блокнот из списка процессов).
Если вы ожидаете, что он появится в графическом интерфейсе, Я абсолютно уверен, что вы не можете этого сделать. ;) Параметр может состоять в том, чтобы выписать пакетный скрипт ( file_put_contents ('runme.bat', 'notepad hello.txt')
) и поставить этот пакетный скрипт в очередь (с планировщиком Windows или любым другим cron -эквивалент находится на Windows), чтобы работать в асинхронном режиме (и очистить себя в конце).
Вы можете использовать эмулятор для этого. Взгляните на эту страницу: Android Emulator . Обратите внимание на следующие два аргумента:
-netdelay & lt; delay & gt;
Установите эмуляцию латентности сети на. Значение по умолчанию - нет. См. Таблицу в эмуляции сетевой задержки для поддерживаемых значений. -netspeed & lt; speed & gt;
Установите эмуляцию сетевой скорости в. Значение по умолчанию заполнено. См. Таблицу в эмуляции сетевой скорости для поддерживаемых значений. Go Run> Запустите конфигурацию, выберите приложение Android и перейдите на вкладку Target. Делайте изменения, как показано на рисунке.
[!d1]
Facebook построил нечто, называемое Расширенное управление трафиком . Краткое описание с их страницы GitHub:
Расширенное управление трафиком (ATC) - это инструмент для моделирования условий сети. Он позволяет управлять подключением устройства к Интернету. Разработчики могут использовать ATC для тестирования своего приложения в разных условиях сети, легко подражая высокоскоростным, мобильным и даже сильно поврежденным сетям. Аспекты подключения, которые можно контролировать, включают в себя:
- полоса пропускания
- латентность
- потеря пакетов
- поврежденные пакеты
]- заказы пакетов
Чтобы иметь возможность формировать сетевой трафик, ATC должен работать на устройстве, которое направляет трафик и видит реальный IP-адрес устройства, например например, ваш сетевой шлюз. Это также позволяет любым устройствам, проходящим через ATC, иметь возможность формировать свой трафик. Трафик может быть сформирован / неформован с использованием веб-интерфейса, позволяющего любым устройствам с веб-браузером использовать ATC без необходимости в клиентском приложении.
Вы можете найти его здесь, на GitHub: https://github.com/facebook/augmented-traffic-control
Они также опубликовали сообщение в блоге об этом: https://code.facebook.com/posts / 1561127100804165 / дополненный трафик управление-а-инструмент к-Simulate-сеть-условие /
, как это предложил @VicVu Charles (или любой другой прокси-инструмент), является более простым способом. Но я хотел бы добавить, что вы можете сделать это и с вашим устройством, а не только с genymotion или другими эмуляторами. Процесс будет таким же:
Измените настройку wifi вашего устройства / эмулятора для использования ручного прокси. И затем установите имя прокси-сервера & amp; порт a. задайте имя хоста как ip вашей системы (получите ip вашего компьютера / mac с помощью ifconfig / ifconfig). b. установите номер порта genymotion (проверьте настройки прокси-сервера в charles)
PS: Ваше устройство / эмулятор ДОЛЖНО использовать тот же Wi-Fi, поскольку используемый вами ip скорее всего будет частным ip.
У меня есть одна стратегия для решения вашей проблемы. Вы можете использовать приложение прокси для изменения или контроля вашего сетевого статуса. например, Charles.
Вы должны изменить конфигурацию по умолчанию в Charles, как и следующее изображение, которое я опубликовал.
И, наконец, вы обнаружите, что чистый статус был сформирован в более низкий темп.
Убедитесь, что у вас есть изменения кода в приложении, которое устанавливает время ожидания для вашего запроса и обрабатывает это.
Вы пробовали это? Настройки - Сети - Дополнительно - Мобильные сети - Сетевой режим - Выберите предпочтительную сеть (например, 2G).
Другой метод, который я использовал, упоминался выше. Подключитесь через iPhone. Надеюсь, это поможет.
Обновление для Android Studio версии 1.5 или выше Как @LouMorda упомянула в комментарии ниже, что вкладка Emulator
, упомянутая в оригинальной записи, была удалена в Android Studio v 1.5.
Теперь они установили эти параметры в настройках симулятора в AVD Manager
. Чтобы получить доступ к этим настройкам:
Инструменты - & gt; Android - & gt; AVD Manager
Edit AVD
(значок карандаша)
возможен после нажав кнопку Показать дополнительные настройки
Вот скриншот о том, как это может выглядеть:
Оригинал сообщения Для тех, кто использует Android Studio IDE:
Run - & gt; Изменить настройки
Android Application - & gt; [Ваше приложение]
вкладку эмулятора
Network Speed
и Network Latency
для имитации различных скоростей и латентностей и т. д. В качестве альтернативы вы можете ввести различные аргументы в текстовое поле Additional command line options
, как указано в @ ответ индазарука.
Снимок экрана ниже описывает, как выглядит этот экран Run Configuration
:
[!d15]
Я знаю его немного поздно, чтобы ответить на этот вопрос, но я надеюсь, что это поможет другим, сталкивающимся с подобными проблемами!
Изменить Для тех, кто использует eclipse, см. ответ @ Abhi ниже.
Вы хотите проверить отсутствие сетевого подключения или просто медленное сетевое соединение? Если первый, вы можете перейти к Настройки & gt; Беспроводная связь & amp; сетей & gt; Режим полета
и включите режим полета. Это позволит вам проверить недоступность сети на реальном устройстве.
Я боролся с этой проблемой полдня, наконец, я пришел к этому решению:
* # * # 4636 # * # *
в приложении телефона Лучший способ сделать это - использовать Genymotion .
После того, как вы создали свое виртуальное устройство в Genymotion, , просто запустите этот учебник , чтобы установить прокси для устройства.
Запустите прокси-сервер на хост-машине, который имитирует плохие сетевые условия, например Crapify или Toxiproxy (я тестировал только первый), и вам хорошо идти.
Обновление:
Я только понял, что вы можете выбрать тот же самый стратегия с реальными устройствами тоже. Я чувствую себя идиотом за то, что не понял этого раньше. Просто запустите прокси-сервер Crapify на своем компьютере, установите прокси-сервер телефона на локальный адрес вашего компьютера и вуаля, у вас на вашем телефоне есть дрянной интернет.
Существует простой способ тестирования низких скоростей на реальном устройстве, которое, похоже, было упущено. Для этого требуется подключение к сети Mac и ethernet (или другое проводное).
Включите совместное использование Wi-Fi на Mac, превратив ваш компьютер в точку доступа Wi-Fi, подключите ваше устройство к этому. Используйте Netlimiter / Charles Proxy или Network Link Conditioner (который вы, возможно, уже установили) для управления скоростями.
Для получения дополнительной информации и для понимания того, какие скорости вы должны проверить при проверке: http://opensignal.com/blog/2016/02/05/go-slow-how-why -в-тест-приложения-на-бедного-соединение /
Или на самом устройстве вы можете перейти в Настройки -> Мобильные сети -> Предпочтительные типы сетей и выбрать самый медленный доступный ... Конечно, это очень ограниченно, но для некоторых целей тестирования этого может быть достаточно.
Поскольку опция разработчика iPhone применима к Wi-Fi-модему, вы можете получить iPhone, который имеет iOS 6
и выше (и был установлен на для разработки
с ] xcode
), настройте его для эмуляции нужного профиля сети, подключите ваше Android-устройство к его горячей точке
[!d3]
Просто зайдите на Android-монитор устройства из студии Android, затем DDMS -> Emulator Control. Появятся свойства скорости и задержки.
и для пользователя Mac OS вы можете использовать Network Link Conditioner, который можно загрузить из Apple. установите его как AP на Mac, и любые его разделы могут подключаться.
вы можете использовать функции open source с помощью facebook ATC http://facebook.github.io/augmented-traffic-control/ [ ! d0]
Я использую прокси-сервер mitmproxy HTTPS. https://mitmproxy.org/
Mitmproxy - это приложение с открытым исходным кодом, которое позволяет перехватывать HTTP и HTTPS-соединения между любым клиентом HTTP (S). Он позволяет контролировать, фиксировать и изменять эти соединения в реальном времени. Запрос на изменение, ответ, заголовок, ... Кроме того, вы можете перехватывать разные запросы.
например. response_delay.py:
из HTTP-импорта mitmproxy из отклика времени отклика временного импорта (поток: http.HTTPFlow) - & gt; None: sleep (5.0)
Затем выполнение этого комментария задерживает все ответы с сервера:
mitmproxy --cert \ *. Asdf.at =. /cert.pem --scripts response_delay.py
В моем приложении я использую фиксацию сертификата, поэтому вам нужно добавить сертификат (private + public)
cat private.key public.key> cert.pem
Здесь вы можете найти простой учебник здесь .
Здесь вы можете найти другие примеры сценариев здесь .
Я нашел, что netlimiter4 является лучшим решением для дросселирования данных для эмуляторов. Он обеспечивает гранулированный контроль через приличный gui и дает вам графическую обратную связь по пропускной способности данных для каждого процесса. В настоящее время в бесплатной бета-версии. снимок экрана
http://www.netlimiter.com/products/nl4
В игровом магазине есть приложения для дросселя на реальных устройствах, но они требуют root (я не могу дать какие-либо рекомендации относительно того, насколько хорошо они работают, если вообще - YMMV.)
искать bradybound в магазине воспроизведения, я не могу опубликовать более одной ссылки ..
UPDATE на студии Android AVD:
Нет микроволн или лифтов:)
Простой способ протестировать ваше приложение с низким / плохим соединением в эмуляторе:
Go Run> Запустите конфигурацию, выберите приложение Android и перейдите на вкладку Target. Посмотрите параметры запуска эмулятора. Здесь вы можете легко изменить скорость сети и сетевую задержку.
Я знаю, что это старый вопрос, но ...
Некоторые телефоны в настоящее время имеют настройки для использования только 2G. Это идеальное решение для моделирования медленного интернета на реальном устройстве.
[!d0]
Это может показаться немного сумасшедшим, но микроволновая печь служит в качестве микроволнового экрана. Поэтому, помещая устройство в микроволновую печь (НЕ включайте микроволновую печь, пока ваше устройство внутри!) Приведет к значительному снижению уровня сигнала. Он определенно бьет, стоя в лифте ...
Годы, но эй, я буду звонить с помощью своего надежного метода с помощью Genymotion.
Proxy -> Throttle Settings
Proxy -> Throttling
, чтобы включить дроссель Modify Network
Show Advanced Options
Proxy
на Manual
Proxy hostname
значение 10.0.3.2
Port
на 8888
Save
И теперь ваша сеть будет дросселирована!
Я удивлен, что никто не упоминал об этом. Вы можете подключаться через Bluetooth и разделить их на десять + метры (или меньше с препятствиями). У вас действительно плохая связь. Нет микроволновой печи, нет лифта, не требуется программное обеспечение.
tc
(из busybox). – yingted 14 March 2012 в 23:53