2 namespace Utility\Comms;
6 * Facilitates chatting to APE http push server.
13 const CHANGE_TYPE_REFRESH = 'Refresh';
14 const CHANGE_TYPE_CREATE = 'Create';
15 const CHANGE_TYPE_UPDATE = 'Update';
16 const CHANGE_TYPE_DELETE = 'Delete';
20 * Speak to the APE server on specified channel.
21 * @param string $channel
24 * @param boolean|string $pubid
25 * @param string $command
26 * @return array|boolean
28 static public function broadcast($channel, array $data, $raw = 'DATA', $pubid = false, $command = 'inlinepush')
30 $gearClient = new \GearmanClient();
31 $gearClient->addServer();
32 $gearClient->doBackground(
37 /*$cmd = \Zend\Json\Json::encode(array(array(
40 'password' => 'ap3dP2ssk3Y',
43 'channel' => $channel,
49 if (false && function_exists('curl_init'))
51 #-> Have curl, use it.
52 $ch = curl_init('http://127.0.0.1:6969');
53 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
54 curl_setopt($ch, CURLOPT_POSTFIELDS, $cmd);
55 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
56 curl_setopt($ch, CURLOPT_HTTPHEADER, array(
57 'Content-Type: application/json',
58 'Content-Length: ' . strlen($cmd))
60 $result = curl_exec($ch);
62 return \Zend\Json\Json::decode($result);
66 #-> No curl, use the slower option.
67 $result = @file_get_contents('http://127.0.0.1:6969', null, stream_context_create(array(
70 'header' => 'Content-Type: application/json' . "\r\n"
71 . 'Content-Length: ' . strlen($cmd) . "\r\n",
75 return \Zend\Json\Json::decode($result);
80 error_log(__CLASS__ . " >> $e");
86 * Broadcast a Dataset Refresh notification.
87 * @param string $datasetName
88 * @return array|boolean
90 static public function broadcastBuildDatasetChange($datasetName)
92 return self::broadcast('synchv1', array(
94 'Strategy' => 'Build',
95 'DatasetName' => $datasetName,
96 'Type' => self::CHANGE_TYPE_REFRESH
103 * Broadcast a Dataset Update notification.
104 * @param string $datasetName
105 * @param string $changeType
106 * @param array $datasetRecord
107 * @return array|boolean
109 static public function broadcastUpdateDatasetChange($datasetName, $changeType, array $datasetRecord)
111 return self::broadcast('synchv1', array(
113 'Strategy' => 'Update',
114 'DatasetName' => $datasetName,
115 'Type' => $changeType
117 'Data' => $datasetRecord