Skip to content

Commit f6495b7

Browse files
committed
64 bit support fot php53
1 parent f80d71f commit f6495b7

File tree

4 files changed

+29
-7
lines changed

4 files changed

+29
-7
lines changed

src/MySQLReplication/BinLog/BinLogConnect.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?php
22
namespace MySQLReplication\BinLog;
33

4+
use MySQLReplication\BinaryDataReader\BinaryDataReader;
45
use MySQLReplication\BinLog\Exception\BinLogException;
56
use MySQLReplication\Config\Config;
67
use MySQLReplication\Repository\MySQLRepository;
@@ -253,7 +254,7 @@ private function getBinlogStream()
253254
$prelude .= chr(0);
254255
$prelude .= chr(0);
255256
$prelude .= chr(0);
256-
$prelude .= pack('Q', 4);
257+
$prelude .= BinaryDataReader::pack64bit(4);
257258

258259
$prelude .= pack('I', $this->gtidCollection->getEncodedLength());
259260
$prelude .= $this->gtidCollection->getEncoded();

src/MySQLReplication/BinaryDataReader/BinaryDataReader.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,4 +417,22 @@ public function isComplete($size)
417417
}
418418
return true;
419419
}
420+
421+
/**
422+
* @param int $value
423+
* @return string
424+
*/
425+
public static function pack64bit($value)
426+
{
427+
return pack('C8',
428+
($value >> 0) & 0xFF,
429+
($value >> 8) & 0xFF,
430+
($value >> 16) & 0xFF,
431+
($value >> 24) & 0xFF,
432+
($value >> 32) & 0xFF,
433+
($value >> 40) & 0xFF,
434+
($value >> 48) & 0xFF,
435+
($value >> 56) & 0xFF
436+
);
437+
}
420438
}

src/MySQLReplication/Gtid/Gtid.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace MySQLReplication\Gtid;
44

5+
use MySQLReplication\BinaryDataReader\BinaryDataReader;
6+
57
/**
68
* Class Gtid
79
* @package MySQLReplication\Gtid
@@ -43,19 +45,19 @@ public function __construct($gtid)
4345
public function getEncoded()
4446
{
4547
$buffer = pack('H*', $this->sid);
46-
$buffer .= pack('Q', count($this->intervals));
48+
$buffer .= BinaryDataReader::pack64bit(count($this->intervals));
4749

4850
foreach ($this->intervals as $interval)
4951
{
5052
if (count($interval) != 1)
5153
{
52-
$buffer .= pack('Q', $interval[0]);
53-
$buffer .= pack('Q', $interval[1]);
54+
$buffer .= BinaryDataReader::pack64bit($interval[0]);
55+
$buffer .= BinaryDataReader::pack64bit($interval[1]);
5456
}
5557
else
5658
{
57-
$buffer .= pack('Q', $interval[0]);
58-
$buffer .= pack('Q', $interval[0] + 1);
59+
$buffer .= BinaryDataReader::pack64bit($interval[0]);
60+
$buffer .= BinaryDataReader::pack64bit($interval[0] + 1);
5961
}
6062
}
6163

src/MySQLReplication/Gtid/GtidCollection.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace MySQLReplication\Gtid;
44

55
use Doctrine\Common\Collections\ArrayCollection;
6+
use MySQLReplication\BinaryDataReader\BinaryDataReader;
67

78
/**
89
* Class GtidSet
@@ -29,7 +30,7 @@ public function getEncodedLength()
2930
*/
3031
public function getEncoded()
3132
{
32-
$s = pack('Q', $this->count());
33+
$s = BinaryDataReader::pack64bit($this->count());
3334
/** @var Gtid $gtid */
3435
foreach ($this->toArray() as $gtid)
3536
{

0 commit comments

Comments
 (0)