umierajúce Nette pri volaní cURL exec

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
DOBss
Člen | 24
+
0
-

Zdravím,

už 3. deň riešim problém s curl a Nette. Problém spočíva v tom, že pri volaní curl_exec nevedno prečo zhodí debuger, ktorého JS sa očividne nevykonávajú. Proste to zobrazí všetky jeho okná cez stránku, kde sa potom nedá pracovať… na volanej stránke je zapnutý apache autentificator (htpasswd), ale v tom problém neni, po vypnutí problém pretrváva. Robím niečo zle? Tu je screen s chybou a kód modelu (v actione presenteru sa volá nad instancoiu Inoice metóda testIt)

https://www.dropbox.com/…lvg/curl.jpg

class Invoice extends Nette\Object {

	/** @var Nette\Database\Connection */
	private $database;

	private $invoices;

	protected $interface;
	protected $postData;
	protected static $conf = array(
		'ssl'		=> false,
		'domain'	=> "domain.co",
		'filepath'	=> "invoice-interface",
		'key'		=> "app-key",
		'authData'	=> array('xxxx', 'yyyy')
	);

	/**
	 * Prepare database connection, tables and interface connection
	 *
	 * @var connection, table, resource curl
	 */
	public function __construct(){
		$this->database = new Database;
		$this->database = $this->database->getDb();
		$this->invoices = $this->database->table('invoices');

		$this->initInterfaceConnection();
	}

	/**
	 * Close interface connection
	 */
	public function __destruct(){
		if(gettype($this->interface) == 'resource')
			curl_close($this->interface);
	}


	protected function initInterfaceConnection(){
		if($this->interface !== NULL)
			curl_close($this->interface);

		$this->interface = curl_init();
		curl_setopt($this->interface, CURLOPT_URL, (self::$conf['ssl'] ? 'https' : 'http')."://".self::$conf['domain'].'/'.self::$conf['filepath']);
		curl_setopt($this->interface, CURLOPT_USERPWD, "user:pass");
		$this->postData = array(
			'key'		=> self::$conf['key'],
			'pass'		=> self::$conf['authData'][0].'*'.self::$conf['authData'][1]
		);
	}


	public function testIt(){
		curl_setopt($this->interface, CURLOPT_POST, TRUE);
		curl_setopt($this->interface, CURLOPT_POSTFIELDS, $this->postData);

		$res = curl_exec($this->interface);
		curl_close($this->interface);

		return $res;
	}
}

uvažoval som nad použitím komponenty cURL wrapper (https://componette.org/search/?…) od F. Procházku, ale toto má byť custom integrácia k fakturačnému systému a preto by som nechcel využívať žiadne komponenty pokiaľ to neni nutné…

Editoval DOBss (6. 5. 2013 19:20)

Filip Procházka
Moderator | 4668
+
0
-

Na tom tvém screenu žádnou chybu nevidím, jenom zbytečně moc rout.

Neboj se to rozšíření použít, má to opensource licenci a můžeš to mít v jakémkoliv software ;)

DOBss
Člen | 24
+
0
-

Filip Procházka napsal(a):

Na tom tvém screenu žádnou chybu nevidím, jenom zbytečně moc rout.

Neboj se to rozšíření použít, má to opensource licenci a můžeš to mít v jakémkoliv software ;)

no uvidíme, možno to skúsim, či to nevyrieši chybu… ale chyba tam je, lebo tie panely sa neskrývajú, akoby nefungoval JS debugera… a to len na tomto presentery pri volaní curl_exec (ak ho zakomentujem, tak je to vpoho)

Twista
Člen | 48
+
0
-

pokud se ti zda ze prestane fungovat JS, mel bys o tom mit zpravu v consoli (v chrome ctrl+shift+j) resp. nejakou chybovou hlasku

DOBss
Člen | 24
+
0
-

no ale funny je to, že žiadnu chybu to nehlási :D ináč by som sem asi nepísal x] =]

flr
Člen | 6
+
0
-

Zkus pred zavolanim curl_exec nastavit:

curl_setopt($this->interface, CURLOPT_RETURNTRANSFER, TRUE);
DOBss
Člen | 24
+
0
-

flr napsal(a):

Zkus pred zavolanim curl_exec nastavit:

curl_setopt($this->interface, CURLOPT_RETURNTRANSFER, TRUE);

že ma to nenapadlo :D díky, to bolo ono ;]