Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> POST запрос. Отправка сокетом., Отправка POST запроса происходит очень долго.
posy  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 58
Пользователь №: 35307
На форуме: 4 года, 1 месяц, 29 дней
Карма: 1




Здравствуйте!
Подскажите, пожалуйста...
Отправляю данные сокетом, вот скрипт

function send_order($num,$sum){

$url = "arduino-ic.ru";

$data = "orderNumber=".$num."&amount=".$sum;

$fp = fsockopen($url, 80, $errno, $errstr, 10);
if ($fp){

$out = "POST /class/ws.php HTTP/1.1\n";
$out .= "Host: ".$url."\n";
$out .= "Referer: ".$url."/\n";
$out .= "User-Agent: Opera\n";
$out .= "Content-Type: application/x-www-form-urlencoded\n";
$out .= "Content-Length: ".strlen($data)."\n\n";
$out .= $data."\n\n";

fputs($fp, $out);

while($gets=fgets($fp,2048)){
$head[] = $gets;
}

if(strrpos($head[8], "#") == true){

return "Location: http://arduino-ic.ru/oshibka=1";

}

if(strrpos($head[8], "rder") == true){

return $head[8];

}
fclose($fp);

}
}


$sum_sb = $sum * 100;


if($pay == 6){
if($ty = send_order($num_row['num_order'],$sum_sb)){
$arr = array("id" => "sb","send" => $ty);
}
}
else{
$arr = array("id" => "ok");
}


Вот скрипт который возвращает данные

if ($response->errorCode != 0) {

echo 'Ошибка #' . $response->errorCode . ': ' . $response->errorMessage;

} else {

echo $response->formUrl;
die();

}

Все отправляется и принимается, но происходит очень долго... Порядка 8-10 секунд.
Почему так долго? Как ускорить отправку и получение?


--------------------
[Подпись удалена модератором]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
posy  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 58
Пользователь №: 35307
На форуме: 4 года, 1 месяц, 29 дней
Карма: 1




Неужели никто помочь не может?


--------------------
[Подпись удалена модератором]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









С той стороны что-то. Антифлуд и что-то подобное.
Я попробовал несколько раз запустить твой скрипт – сначала все было ок. Потом он перестал работать. Попробовал через прокси – заработал.
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
posy  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 58
Пользователь №: 35307
На форуме: 4 года, 1 месяц, 29 дней
Карма: 1




Порылся в доках и получается вот что.
Надо указать заголовок Connection: keep-alive или close тогда все происходит без задержек, так как соединение будет активно пока не произойдет тайм-аут, но к возвращаемой ссылке добавляется HTTP/1.1 400 Bad Request. Можно ее вырезать str_replace, но хочется без костылей.


$out = "POST /class/ws.php HTTP/1.1\n";
$out .= "Host: ".$url."\n";
$out .= "Referer: ".$url."/\n";
$out .= "Connection: Keep-Alive\n\n";
$out .= "User-Agent: Opera\n";
$out .= "Content-Type: application/x-www-form-urlencoded\n";
$out .= "Content-Length: ".strlen($data)."\n\n";
$out .= $data."\n\n";


--------------------
[Подпись удалена модератором]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
depp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 290
Пользователь №: 40589
На форуме: 2 года
Карма: 19




есть ли возможность использовать curl?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
posy  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 58
Пользователь №: 35307
На форуме: 4 года, 1 месяц, 29 дней
Карма: 1




все решилось хорошо :)


function send_order($num,$sum){
$url = "http://arduino-ic.ru/class/ws.php";

$data = array(
"orderNumber" => $num,
"amount" => $sum
);
$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, $data);

$out = curl_exec($ch);

curl_close($ch);

return $out;


}

$sum_sb = $sum * 100;

if($pay == 6){
if($ty = send_order($num_row['num_order'],$sum_sb)){
$arr = array("id" => "sb","send" => $ty);
}
}
else{
$arr = array("id" => "ok");
}


Когда нибудь мой консерватизм меня погубит! user posted image


--------------------
[Подпись удалена модератором]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса