Connect failed: Connection timed out

[GastForen Programmierung/Entwicklung PHP und MySQL Array per fsockopen übermitteln

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Array per fsockopen übermitteln

Intermedia
Beiträge gesamt: 1287

13. Sep 2005, 19:03
Beitrag # 1 von 6
Bewertung:
(2501 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich möchte gerne ein komplettes Array per fsockopen an einen Server übermitteln.
Hab zu diesem Thema schon gesucht und in allen Fällen wurde das Array wieder auseinander genommen und als String mit Trennzeichen übersendet.

Gibt es überhaupt eine Möglichkeit sowas zu realisieren?

Hier mal meine Ansätze:

$url = "192.168.1.60/test.php?str=";

$str= array("111111","2222222","33333333","44444444","55555555","66666666","77777777","8888888888","999999999","00000000");

$aus = $url.$str;

$fp = fsockopen('192.168.1.60', 80, $errno, $error, 2);
if ($fp){

fputs($fp, "GET $aus HTTP/1.0\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
fputs($fp, "Connection: close\n\n");

while (!@feof($fp)){$f[0].= @fgets ($fp,256);$ds++;}
echo $f[0]- $fp;

@fclose ($fp);
}

Dazu ist noch zu sagen das auf der anderen Seite die Variable $str als Array erkannt wird aber der Inhalt ist etwas unsinnig wenn ich versuche es wieder zu zerlegen.

Wenn ich das Array wieder in einen String zusammensetze kommt alles sauber an, also geh ich mal davon aus, es kann ein Array nicht übermittelt werden.

Falls jemand hierzu noch ne Idee haben sollte bin ich dankbar, an sonsten geh ich doch den Weg des Strings mit einem Trennzeichen.

Vielen Dank im Vorraus.

Gruß Sven
X

Array per fsockopen übermitteln

ganesh
Beiträge gesamt: 1981

14. Sep 2005, 19:43
Beitrag # 2 von 6
Beitrag ID: #187318
Bewertung:
(2485 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Alles was via GET übertragen wird, ist ein String.

Was ist die Applikation/Idee dahinter?
Wäre eine SOAP Lösung nicht besser?

Es gibt z.B. die Möglichkeit, POST-Formulardaten via cURL zu übermitteln.


als Antwort auf: [#187126]

Array per fsockopen übermitteln

Intermedia
Beiträge gesamt: 1287

14. Sep 2005, 20:06
Beitrag # 3 von 6
Beitrag ID: #187320
Bewertung:
(2482 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

erstmal danke für dein Feedback, also es handelt sich hierbei um eine Schnittstelle an welcher konkret eine größere Menge von Handynummern eingeliefert werden können an welche dann SMS versendet werden.

Zur Zeit kann die SMS Schnittstelle ca. 2 bis 4 SMS pro Sekunde annehmen und versenden inklusive der nötigen Abfragen nach verschiedenen Parametern.

Für einige User ist es zu langsam wenn größere Mengen (> 2000 Stück) einzeln geschickt werden. Schnell kommt man an das Scripttimeout von PHP da die Schnittstelle in einer Schleife angesteuert werden muß.
Ich muß noch eins beachten bei der Erstellung, ich geh davon aus das entsprechende User wissen was ein Array ist, das der Programmieraufwand für die Ansteuerung der Schnittstelle gering gehalten wird.

Es hat auch nicht jeder User die Möglichkeit bzw. Kenntniss die Einstellung von php zu ändern.

Wenn ich die Handynummern als String bekommen kann ich ca. 500 Stück (8 k)
verarbeiten, das geht fix.

Die Idee mit dem POST hatte ich auch schon, und mit cURL hab ich es auch schon versucht, leider steh ich damit etwas auf Kriegsfuß ;-) und meine Daten kommen immer nur per GET an bzw garnicht.

Über fsockopen kann man, lt. Docu, auch per Post Daten senden hatte aber bisher auch noch keinen richtigen Erfolg damit. Egal was ich versucht habe, die Daten kamen immer per GET an.

So nu nun steh ich auf dem Schlauch, was ist "SOAP" ?

Gruß Sven

P.S. Da es heute fix gehen mußte hab ich die Schnittstelle erstmal per GET öffentlich zugänglich gemacht und es sind erstmal alle zufrieden, fragt sich nur wie lange. ;-)


als Antwort auf: [#187318]
(Dieser Beitrag wurde von Intermedia am 14. Sep 2005, 20:08 geändert)

Array per fsockopen übermitteln

ganesh
Beiträge gesamt: 1981

14. Sep 2005, 20:32
Beitrag # 4 von 6
Beitrag ID: #187324
Bewertung:
(2477 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
cURL funktioniert tip-top, auch mit POST. Vermutlich machst Du also etwas falsch.

SOAP: Pfui, davon spricht doch die ganze (developer-) Welt seit Jahren schon. Noch nie von Web Services gehört? Google, Amazon, Flickr API?

http://ca.php.net/soap
http://webservices.xml.com/...004/03/24/phpws.html
http://developer.apple.com/...ervices/soapphp.html
http://www.w3.org/TR/soap12-part0/


artverwandt: WDDX
http://www.openwddx.org/faq/

und vielleicht hilft das hier auch weiter:
http://www.sephiroth.it/tutorials/flashPHP/sms/
(inkl. CURL + socket Bsp.)


als Antwort auf: [#187320]

Array per fsockopen übermitteln

Intermedia
Beiträge gesamt: 1287

14. Sep 2005, 21:07
Beitrag # 5 von 6
Beitrag ID: #187328
Bewertung:
(2473 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ui ui ui das Fettnäpfchen war tief. ;-)

Ja ich weiss was du meinst, der Wunsch nach ner XML Schnittstelle wurde schon gestellt, aber da das von 2000 Usern bisher nur 2 wollten hab ich es erstmal ingnoriert und als nicht primär betrachtet.

Nun gut, also werde ich mich mal intensiver mit cURL beschäftigen, aber ich bezweifel das es die Nutzer hinbekommen (Erfahrungswerte, da einige schon mit einem String nicht zurecht kommen).

Auf jeden Fall erstmal ein herzliches Dankeschön!

Gruß Sven


als Antwort auf: [#187324]

Array per fsockopen übermitteln

Intermedia
Beiträge gesamt: 1287

19. Sep 2005, 17:52
Beitrag # 6 von 6
Beitrag ID: #187850
Bewertung:
(2435 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

so ich hab jetzt die Lösung mit cURL und dem Versand von Daten per POST.
Für alle die es interessiert hier die Lösung:

<?
// Handynummern mit Semikolon getrennt
$handy = "12345;23456;777777;88888888;999999";

$request = "";
//Benutzername
$param["id"] = "benutzer";
// Passwort
$param["pw"] = "passwort";
//SMS Typ
$param["type"] = "2";
//Empfänger mit Semikolon getrennt
$param["empfaenger"] = $handy;
//Absender
$param["absender"] = "017112345";
//Inhalt der SMS
$param["text"] = "Testen wir das doch mal";
//SMS Code für Antwortfunktion Typ 2
$param["reply"] = "1";
//E-Mailadresse für Antwort
$param["reply_email"] = "E-Mailadresse";
//Datum und Uhrzeit für Terminsms
$param["termin"] = "TT.MM.JJJJ-SS:MM";
//Sendestatus
$param["id_status"] = "1";
//Massenversand einleiten mit mehr als 500 Empfängern gleichzeitig
$param["massen"] = "2";

foreach($param as $key=>$val){

$request.= $key."=".urlencode($val);

$request.= "&";
}

$url = "http://dieadressewoeshingeht/seite.php";



$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, $request);
$response = curl_exec($ch);
curl_close($ch);

echo $response;


?>
Allerdings hat es mit dem Übertragen eines Arrays noch nicht funktioniert aber die
Einschränkung der GET Methode ist damit überwunden.

Es ist zwar etwas speziell auf meine Anwendung angepasst aber ist durchaus für andere Anwendungen zu übernehmen.

Gruß Sven


als Antwort auf: [#187328]
X