Ik probeer mijn script samen met Gearman te laten werken. Ik draai een Gearman-daemon (gearmand) op mijn server. De output zou een pagina moeten zijn met eigenlijk vrijwel niets. Maar de echte uitkomst is nog minder dan dat, want er komt helemaal geen pagina uit, maar een file dat me aan wordt geboden via mijn browser (in dit geval worker.php, zoals mijn bestand heet). Ik snap niet wat ik fout doe, heeft het mogelijk met de namespaces te maken?
Onderstaand mijn volledige script. Wanneer ik een 'addFunction' statement uncomment, dan krijg ik het als bestand aangeboden. Anders werkt het prima. Ook een callback met '$this' ipv static geeft hetzelfde resultaat.
Iemand die me helpen kan? Ik draai dus PHP 5.3.1 op Apache 2.2
Onderstaand mijn volledige script. Wanneer ik een 'addFunction' statement uncomment, dan krijg ik het als bestand aangeboden. Anders werkt het prima. Ook een callback met '$this' ipv static geeft hetzelfde resultaat.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
| namespace Rows { class Worker { public static $aMappings = Array(), $oInst = null; public $sId, $oClient, $oWorker, $aNeighbours = Array(); // Life starts // Should be singleton I guess.. private function __construct() { $this->sId = base64_encode(time().rand()); $this->initClient(); $this->initWorker(); $this->oClient->doHigh('addNeighbour', $this->sId); } public static function &getInstance() { if (self::$oInst == null) self::$oInst = new self(); return self::$oInst; } private function initClient() { $this->oClient = new \GearmanClient(); $this->oClient->setTimeout(2000); $this->oClient->addServer(); } private function initWorker() { $this->oWorker = new \GearmanWorker(); $this->oWorker->addServer(); /*var_dump( $this->oClient->do('getNeighbours', null) ); $this->aNeighbours = $this->oClient->do('getNeighbours', null);*/ $this->oWorker->addFunction('addNeighbour', '\Rows\Worker::addNeighbour'); //$this->oWorker->addFunction('removeNeighbour', Array(__CLASS__, 'removeNeighbour')); } public function doWork() { $this->oWorker->work(); //while ($this->oWorker->work()){ echo '!'.$this->oWorker->returnCode(); }; } // Neighbour functions public static function addNeighbour($sId) { //return self::getInstance()->aNeighbours[$sId->workload()] = true; //return self::getInstance()->updateNeighbours($sId); } public static function setNeighbours($aIds) { return self::getInstance()->aNeighbours = $aIds; } public static function getNeighbours() { return self::getInstance()->aNeighbours; } public static function updateNeighbours($sId) { foreach (self::getInstance()->aNeighbours as $sNeigbourId => $bTrue) { echo $sNeighbourId; /*if(($sNeigbourId == $sId) || ($sNeighbourId == self::getInstance()->sId)) continue; self::getInstance()->oClient->do('setNeighbours_'.$sNeigbourId, self::getInstance()->aNeighbours);*/ } return true; } public static function removeNeighbour($sId) { self::getInstance()->aNeighbours[$sId->workload()] = null; //return self::getInstance()->updateNeighbours($sId->workload()); } // Dead meat public function __destruct() { $this->oClient->doHigh('removeNeighbour', $this->sId); } } } [..] init [..] |
Iemand die me helpen kan? Ik draai dus PHP 5.3.1 op Apache 2.2
[ Voor 7% gewijzigd door r0bert op 04-02-2010 19:21 ]