PHP OrientDB bağlanırken

0 Cevap php

Ben OrientDB ikili API için PHP için bir adaptör yazmak istiyorum.

Ama PHP çiğ Soket iletişimi ile deneyime sahip birinden yardım biraz gerekir - hatta OrientDB PHP bağlayan ilk engel geçmiş olsun gibi olamaz.

Soketli birisi deneyim bu bir göz atın eğer ben takdir ediyorum:

http://code.google.com/p/orient/issues/detail?id=126

Biz ilk engel geçmiş olsun ve aslında (bu sayfanın altındaki basitleştirilmiş örnekler - sonuna gidin lütfen) bir paket göndermek olsaydı, ben kesinlikle adaptörünü yazabilirsiniz.

Ben yaparsam Ve bu tabii ki açık kaynak olarak piyasaya olacaktır.

Kimse umut bana başlamanıza yardımcı olabilir?

Teşekkürler!


11/20/2010

PEAR'ın Net_Socket başvurulması, ben aslında ben fsockopen () kullanarak, erken teşebbüs aynı kod ve düzenli PHP akışı fonksiyonları ile sona erdi.

Hala hiçbir yerde var. Sunucu hiç tepki vermez, ve hatta bir 5 saniyelik bir zaman aşımı seti ile, komut sadece derin uyku gider ve genel PHP komut dosyası zaman sınırı aştı kadar gelmez.

İşte kod:

<?php

header('Content-type: text/plain');

error_reporting(E_ALL | E_NOTICE | E_WARNING);

$txid = 123;
$db = 'demo';
$username = 'writer';
$password = 'writer';

$packet = "\x05". # 1 byte
  pack('i',$txid). # 4 bytes
  pack('i',strlen($db)).$db. # string
  pack('i',strlen($username)).$username. # string
  pack('i',strlen($password)).$password; # string

hex_dump($packet);

$addr = '127.0.0.1';
$port = 2424;
$timeout = 5;
$errstr = '';
$errno = 0;

$socket = fsockopen($addr, $port, $errno, $errstr, $timeout);

stream_set_blocking($socket, 1);

socket_set_timeout($socket, $timeout);

var_dump($socket);

fwrite($socket, $packet);

$response = '';
while (!feof($socket))
  $response .= fread($socket, 1024);

hex_dump($response);

fclose($socket);

Ve burada ben teslim ediyorum paket incelemek için kullanıyorum hex_dump () fonksiyonu bulunuyor:

<?php

function hex_dump($data, $newline="\n")
{
  static $from = '';
  static $to = '';

  static $width = 16; # number of bytes per line

  static $pad = '.'; # padding for non-visible characters

  if ($from==='')
  {
    for ($i=0; $i<=0xFF; $i++)
    {
      $from .= chr($i);
      $to .= ($i >= 0x20 && $i <= 0x7E) ? chr($i) : $pad;
    }
  }

  $hex = str_split(bin2hex($data), $width*2);
  $chars = str_split(strtr($data, $from, $to), $width);

  $offset = 0;
  foreach ($hex as $i => $line)
  {
    echo sprintf('%6X',$offset).' : '.implode(' ', str_split($line,2)) . ' [' . $chars[$i] . ']' . $newline;
    $offset += $width;
  }
}

Luca Garulli, OrientDB yazarına göre, ben teslim ediyorum paket doğru görünüyor. Yani başka bir şey yanlış olduğunu ...

Bu, bir Windows sorunu olabilir? Ben Apache altında, Windows üzerinde PHP 5.3 kullanıyorum ...

0 Cevap