Slide 1

Slide 1 text

4OJEFMͷ͝঺հ த໺ڿਓ(.01&1"#0JOD 1)1#-5 ฒྻॲཧͰফ໣͍ͯ͠Δ͔ͨ΁

Slide 2

Slide 2 text

8ΞϓϦέʔγϣϯΤϯδχΞ άϯϚʔ த໺ڿਓ ͖͋ͬʔ !/","/0@"LJIJUP &$ࣄۀ෦Χϥʔϛʔγϣοϓάϧʔϓ IUUQBDLJOUPTIHJUIVCJP

Slide 3

Slide 3 text

Χϥʔϛʔγϣοϓ

Slide 4

Slide 4 text

ফ໣͍ͯ͠·ͤΜ͔ʁ

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

ऴΘΒͳ͍

Slide 8

Slide 8 text

ύϥͰ࣮ߦ͍ͨ͠

Slide 9

Slide 9 text

Ͳ͏͢Δ wDVSM@NVMUJ wQDOUM@GPSL wQUISFBE֦ு wόοΫάϥ΢ϯυ wλεΫΩϡʔΠϯά wଞͷݴޠΛซ༻͢Δ wଞͷݴޠͰॻ͖ͳ͓͢ ʜ

Slide 10

Slide 10 text

ΘΓͱݫ͍͠

Slide 11

Slide 11 text

4OJEFMͷ͝঺հ

Slide 12

Slide 12 text

4OJEFM εφΠσϧ IUUQTHJUIVCDPNBDLJOUPTITOJEFM खܰʹϚϧνϓϩηεͰ͖Δ ࢠϓϩηεͷॲཧ݁ՌΛड͚औΕΔ ϚελʔʗϫʔΧʔϞσϧ 1)1Ҏ্

Slide 13

Slide 13 text

खܰʹϚϧνϓϩηεͰ͖Δ

Slide 14

Slide 14 text

खܰʹϚϧνϓϩηεͰ͖Δ $snidel = new Snidel($concurrency = 5);

Slide 15

Slide 15 text

खܰʹϚϧνϓϩηεͰ͖Δ $snidel = new Snidel($concurrency = 5); $sleep = function () { sleep(3); };

Slide 16

Slide 16 text

खܰʹϚϧνϓϩηεͰ͖Δ $snidel = new Snidel($concurrency = 5); $sleep = function () { sleep(3); }; $snidel->fork($sleep); $snidel->fork($sleep);

Slide 17

Slide 17 text

खܰʹϚϧνϓϩηεͰ͖Δ $snidel = new Snidel($concurrency = 5); $sleep = function () { sleep(3); }; $snidel->fork($sleep); $snidel->fork($sleep); $snidel->wait();

Slide 18

Slide 18 text

खܰʹϚϧνϓϩηεͰ͖Δ $snidel = new Snidel($concurrency = 5); $sleep = function () { sleep(3); }; $snidel->fork($sleep); $snidel->fork($sleep); $snidel->wait();// 3ඵͰ͓ΘΔ

Slide 19

Slide 19 text

खܰʹϚϧνϓϩηεͰ͖Δ // ແ໊ؔ਺ $snidel->fork($f, ‘arg'); // άϩʔόϧؔ਺ $snidel->fork('strtoupper', ‘php’); // Πϯελϯεϝιου $snidel->fork([$instance, ‘method’], [‘arg1’, ’arg2’]); // ελςΟοΫϝιου $snidel->fork([‘\FooClass’, ‘method’], [‘arg1’, ’arg2’]);

Slide 20

Slide 20 text

DBMM@VTFS@GVOD@BSSBZͱ ΄΅ ಉ͡

Slide 21

Slide 21 text

ࢠϓϩηεͷॲཧ݁ՌΛड͚औΕΔ

Slide 22

Slide 22 text

ࢠϓϩηεͷॲཧ݁ՌΛड͚औΕΔ $f = function ($arg) { return $arg; };

Slide 23

Slide 23 text

ࢠϓϩηεͷॲཧ݁ՌΛड͚औΕΔ $f = function ($arg) { return $arg; }; $snidel->fork($f, 'foo'); $snidel->fork($f, 'bar'); $snidel->fork($f, 'baz');

Slide 24

Slide 24 text

ࢠϓϩηεͷॲཧ݁ՌΛड͚औΕΔ $f = function ($arg) { return $arg; }; $snidel->fork($f, 'foo'); $snidel->fork($f, 'bar'); $snidel->fork($f, 'baz'); var_dump($snidel->get()->toArray());

Slide 25

Slide 25 text

ࢠϓϩηεͷॲཧ݁ՌΛड͚औΕΔ $f = function ($arg) { return $arg; }; $snidel->fork($f, 'foo'); $snidel->fork($f, 'bar'); $snidel->fork($f, 'baz'); var_dump($snidel->get()->toArray()); array(3) { [0] => string(3) "bar" [1] => string(3) “foo" [2] => string(3) "baz" }

Slide 26

Slide 26 text

ࢠϓϩηεͷॲཧ݁ՌΛड͚औΕΔ $f = function ($arg) { return $arg; }; $snidel->fork($f, 'foo'); $snidel->fork($f, 'bar'); $snidel->fork($f, 'baz'); var_dump($snidel->get()->toArray()); array(3) { [0] => string(3) "bar" [1] => string(3) “foo" [2] => string(3) "baz" } ˞݁Ռͷॱং͸อূ͞Εͳ͍

Slide 27

Slide 27 text

λά෇͚͢Δ

Slide 28

Slide 28 text

ॲཧ݁ՌΛλά෇͚͢Δ // ୈ̏Ҿ਺ʹλάΛࢦఆ͢Δ $snidel->fork($f, ‘foo’, ‘tag1’); $snidel->fork($f, ‘bar’, ‘tag1’); $snidel->fork($f, ‘baz’, ‘tag2’);

Slide 29

Slide 29 text

ॲཧ݁ՌΛλά෇͚͢Δ // ୈ̏Ҿ਺ʹλάΛࢦఆ͢Δ $snidel->fork($f, ‘foo’, ‘tag1’); $snidel->fork($f, ‘bar’, ‘tag1’); $snidel->fork($f, ‘baz’, ‘tag2’); var_dump($snidel->get('tag1')->toArray());

Slide 30

Slide 30 text

ॲཧ݁ՌΛλά෇͚͢Δ // ୈ̏Ҿ਺ʹλάΛࢦఆ͢Δ $snidel->fork($f, ‘foo’, ‘tag1’); $snidel->fork($f, ‘bar’, ‘tag1’); $snidel->fork($f, ‘baz’, ‘tag2’); var_dump($snidel->get('tag1')->toArray()); array(2) { [0]=> string(3) "foo" [1]=> string(3) "bar" }

Slide 31

Slide 31 text

ͦͷଞͷػೳ

Slide 32

Slide 32 text

ͦͷଞͷػೳ ϩά $fp = fopen('php://stdout', ‘w’); $snidel->setLogDestination($fp); $snidel->fork($f);

Slide 33

Slide 33 text

ͦͷଞͷػೳ ϩά $fp = fopen('php://stdout', ‘w’); $snidel->setLogDestination($fp); $snidel->fork($f); [2016-07-20 20:00:00][info][29688(owner)] pid: 29688 [2016-07-20 20:00:00][info][29689(master)] pid: 29689 [2016-07-20 20:00:00][info][29688(owner)] queued task #1 [2016-07-20 20:00:00][info][29688(owner)] queued task #2 [2016-07-20 20:00:00][info][29689(master)] dequeued task #1 [2016-07-20 20:00:00][info][29689(master)] forked worker. pid: 29690

Slide 34

Slide 34 text

ͦͷଞͷػೳ ͭͳ࣮͛ͯߦ $args = ['aaa', ‘bbb’, ‘ccc’, ‘ddd’, ‘eee’, ‘fff’, 'ggg'];

Slide 35

Slide 35 text

ͦͷଞͷػೳ ͭͳ࣮͛ͯߦ $args = ['aaa', ‘bbb’, ‘ccc’, ‘ddd’, ‘eee’, ‘fff’, 'ggg']; $snidel = new Snidel($concurrency = 2);

Slide 36

Slide 36 text

ͦͷଞͷػೳ ͭͳ࣮͛ͯߦ $args = ['aaa', ‘bbb’, ‘ccc’, ‘ddd’, ‘eee’, ‘fff’, 'ggg']; $snidel = new Snidel($concurrency = 2); $camelize = $snidel->map($args, function ($arg) { /** ॲཧ1 */ return explode(' ', strtolower($arg)); })->then(function ($result) { /** ॲཧ2 */ return array_map('ucfirst', $result->getReturn()); })->then(function ($result) { /** ॲཧ3 */ return implode('', $result->getReturn()); });

Slide 37

Slide 37 text

ͦͷଞͷػೳ ͭͳ࣮͛ͯߦ $args = ['aaa', ‘bbb’, ‘ccc’, ‘ddd’, ‘eee’, ‘fff’, 'ggg']; $snidel = new Snidel($concurrency = 2); $camelize = $snidel->map($args, function ($arg) { /** ॲཧ1 */ return explode(' ', strtolower($arg)); })->then(function ($result) { /** ॲཧ2 */ return array_map('ucfirst', $result->getReturn()); })->then(function ($result) { /** ॲཧ3 */ return implode('', $result->getReturn()); }); var_dump($snidel->run($camelize));

Slide 38

Slide 38 text

ಈ࡞Πϝʔδ IUUQTWJNFPDPN

Slide 39

Slide 39 text

ͦͷଞͷػೳ ͭͳ࣮͛ͯߦ $args = ['aaa', ‘bbb’, ‘ccc’, ‘ddd’, ‘eee’, ‘fff’, 'ggg']; $snidel = new Snidel($concurrency = 2); $camelize = $snidel->map($args, function ($arg) { /** ॲཧ1 */ return explode(' ', strtolower($arg)); })->then(function ($result) { /** ॲཧ2 */ return array_map('ucfirst', $result->getReturn()); })->then(function ($result) { /** ॲཧ3 */ return implode('', $result->getReturn()); }); var_dump($snidel->run($camelize)); ࣍ͷόʔδϣϯͰ࡟আ༧ఆ ݸผͷϥΠϒϥϦʹ

Slide 40

Slide 40 text

·ͱΊ

Slide 41

Slide 41 text

ฒྻॲཧͰফ໣͍ͯ͠Δਓ͸ Snidel Λ࢖ͬͨΒ޾ͤʹͳΕΔ͔΋

Slide 42

Slide 42 text

ϓϧϦΫΤετ׻ܴʂ IUUQTHJUIVCDPNBDLJOUPTITOJEFM

Slide 43

Slide 43 text

܅΋ϖύϘͰಇ͔ͳ͍͔ʁ ࠷৽ͷ࠾༻৘ใΛνΣοΫˠ !QC@SFDSVJU

Slide 44

Slide 44 text

No content