Example #1
0
/**
 * @param \Dja\Db\Model\Query\BaseQuerySet $qs
 * @param int $chunkSize
 * @return \Iterator
 */
function chunkedIterator(\Dja\Db\Model\Query\BaseQuerySet $qs, $chunkSize = 1000)
{
    $qs = clone $qs;
    $baseLimit = $qs->_qb()->getMaxResults();
    $allCount = $qs->doCount();
    $expectingResultsCount = $baseLimit !== null ? min($baseLimit, $allCount) : $allCount;
    $numIters = ceil($expectingResultsCount / $chunkSize);
    foreach (xrange(0, $numIters - 1) as $offsetMultiplier) {
        $offset = $offsetMultiplier * $chunkSize;
        $qs->_qb()->setFirstResult($offset)->setMaxResults($chunkSize);
        foreach ($qs as $key => $row) {
            (yield $key => $row);
        }
    }
}
function testVariants($count) {
    testTraversable(
        "xrange        ($count)",
        function() use($count) { return xrange(0, $count); }
    );
    testTraversable(
        "RangeIterator ($count)",
        function() use($count) { return new RangeIterator(0, $count); }
    );
    testTraversable(
        "urange        ($count)",
        function() use($count) { return urange(0, $count); }
    );
    testTraversable(
        "range         ($count)",
        function() use($count) { return range(0, $count); }
    );
}
Example #3
0
function xrange($start, $limit, $step = 1)
{
    if ($start < $limit) {
        if ($step <= 0) {
            throw new LogicException('Step must be +ve');
        }
        foreach (range($start, $limit, $step) as $i) {
            (yield $i);
        }
    } else {
        if ($step >= 0) {
            throw new LogicException('Step must be -ve');
        }
        foreach (range($start, $limit, $step) as $i) {
            (yield $i);
        }
    }
}
/**
注意下面range()和xrange()输出的结果是一样的。
**/
echo 'Single digit odd numbers from range():  ';
foreach (range(1, 9, 2) as $number) {
    echo "{$number} ";
}
echo "\n";
echo 'Single digit odd numbers from xrange(): ';
foreach (xrange(1, 9, 2) as $number) {
    echo "{$number} ";
}
echo "\n";
use Ulrichsg\Getopt\Getopt;
use Ulrichsg\Getopt\Option;
require_once 'init.php';
// Set up our command line arguments.
$playerOption = (new Option(null, 'playerId', Getopt::REQUIRED_ARGUMENT))->setDescription('The ID of the player to calculate for (required)')->setValidation($vNotBlank);
$args = array_merge($DatabaseOptions, [$playerOption]);
$options = new Getopt($args);
// Parse the command-line arguments and connect to the database.
try {
    $options->parse();
} catch (UnexpectedValueException $e) {
    echo $e->getMessage() . "\n";
    echo $options->getHelpText() . "\n";
    exit;
}
// Connect to the database.
$pdo = connectToDatabase($options);
// Prepare the SQL.  The base SQL allows for a rolling mean to be created from
// a hard-coded set of game numbers.  Here we modify that SQL so that we can
// loop over a set of game numbers and store rolling mean data for each game
// number for each player.
$sql = file_get_contents('hitter-rolling-mean.sql');
$sql = str_replace('FROM', ', :s1 AS start_game, :e1 AS end_game FROM ', $sql);
$sql = str_replace('/* AND p.id =  */', ' AND p.id=:pid ', $sql);
$sql = str_replace('1 AND 10', ' :s2 AND :e2 ', $sql);
$sql = 'INSERT INTO hitter_rolling_mean ' . $sql;
$stmt = $pdo->prepare($sql);
// Calculate the rolling mean in groups of 10 games.
foreach (xrange(1, 152) as $startGameNumber) {
    $stmt->execute([':pid' => $options['playerId'], ':s1' => $startGameNumber, ':s2' => $startGameNumber, ':e1' => $startGameNumber + 10, ':e2' => $startGameNumber + 10]);
}
Example #5
0
<?php

function xrange($start, $end, $step = 1)
{
    for ($i = $start; $i <= $end; $i += $step) {
        (yield $i);
    }
}
$gen = xrange(1, 10);
foreach ($gen as $num) {
    echo $num, "\n";
}
function gen()
{
    $ret = (yield 'yield1');
    var_dump($ret . " | in gen()");
    $ret = (yield 'yield2');
    var_dump($ret . " | in gen()");
}
$gen = gen();
var_dump($gen->rewind());
var_dump($gen->current());
// string(6) "yield1"
var_dump($gen->send('ret1'));
// string(4) "ret1"   (the first var_dump in gen)
// string(6) "yield2" (the var_dump of the ->send() return value)
var_dump($gen->send('ret2'));
class Task
{
    protected $taskId;
    protected $coroutine;
Example #6
0
<?php
function xrange($start, $limit, $step = 1) {
    for ($i = $start; $i <= $limit; $i += $step) {
        yield $i;
    }
}

echo 'Single digit odd numbers: ';

/*
 * Note that an array is never created or returned,
 * which saves memory.
 */
foreach (xrange(1, 210000, 3) as $number) {
    echo "$number ";
}
echo "echo \n";

for ($i = 1; $i <= 210000; $i++) {
       echo $i . ",";
}
echo "\n";

echo memory_get_usage(true) . PHP_EOL;
?>
Example #7
0
<?php

function xrange($start, $end, $step = 1)
{
    for ($i = $start; $i <= $end; $i += $step) {
        (yield $i);
    }
}
foreach (xrange(10, 20, 2) as $i) {
    var_dump($i);
}
Example #8
0
        if ($step <= 0) {
            throw new LogicException('Step must be +ve');
        }
        for ($i = $start; $i <= $limit; $i += $step) {
            (yield $i);
        }
    } else {
        if ($step >= 0) {
            throw new LogicException('Step must be -ve');
        }
        for ($i = $start; $i >= $limit; $i += $step) {
            (yield $i);
        }
    }
}
foreach (xrange(0, 10, 1) as $number) {
    echo $number . "<br/>";
}
$gen = (function () {
    (yield 1);
    (yield 2);
    (yield 3);
    return 4;
})();
//返回 123
foreach ($gen as $val) {
    echo $val, PHP_EOL;
}
//返回4
echo $gen->getReturn(), PHP_EOL;
function gen()
Example #9
0
<?php

function xrange($start, $end, $step = 1)
{
    for ($i = $start; $i < $end; $i += $step) {
        (yield $i);
    }
}
foreach (xrange(1, 10) as $num) {
    echo $num, "\n";
}
Example #10
0
use App\Task;
/**
 * Created by PhpStorm.
 * User: Jason
 * Date: 11/21/2015
 * Time: 11:20 PM
 */
require_once "vendor/autoload.php";
function xrange($start, $end, $step = 1)
{
    for ($i = $start; $i <= $end; $i += $step) {
        $ret = (yield $i);
        echo "i is {$i}, ret is {$ret} \n";
    }
}
$range = xrange(1, 5);
var_dump($range->rewind());
/*var_dump($range->current());
var_dump($range->next());*/
//var_dump($range->current());
var_dump($range->send("test"));
var_dump($range->send("test2"));
/*foreach ($range as $num) {
    echo $num, "\n";
}*/
//var_dump($range); // object(Generator)#1
//var_dump($range instanceof Iterator); // bool(true)
echo "## Second Test \n";
function getTaskId()
{
    return new SystemCall(function (Task $task, Scheduler $scheduler) {
Example #11
0
function xrange($start, $limit, $step = 1)
{
    if ($start < $limit) {
        if ($step <= 0) {
            throw new LogicException('step must be +ve');
        }
        for ($i = $start; $i < $limit; $i += $step) {
            (yield $i);
        }
    } else {
        if ($step >= 0) {
            throw new LogicException('step must be +ve');
        }
        for ($i = $start; $i >= $limit; $i += $step) {
            (yield $i);
        }
    }
}
//10000000
$xrange = xrange(1, 20, 2);
print_r($xrange->key());
echo PHP_EOL;
//echo 'Single digit odd numbers from xrange(): ';
foreach ($xrange as $number) {
    echo "{$number} ";
    echo PHP_EOL;
}
//print_r($result);
echo PHP_EOL;
echo memory_get_usage();
echo PHP_EOL;