本文整理汇总了PHP中gc_collect_cycles函数的典型用法代码示例。如果您正苦于以下问题:PHP gc_collect_cycles函数的具体用法?PHP gc_collect_cycles怎么用?PHP gc_collect_cycles使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了gc_collect_cycles函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: run
public function run(array $argv, $exit = true, $memoryTracking = true, $bootstrap = null)
{
require_once __DIR__ . '/../printer/SerializePrinter.php';
$this->arguments['printer'] = $this->handlePrinter('phpunit_parallel\\printer\\SerializePrinter');
if ($bootstrap) {
$this->arguments['bootstrap'] = $bootstrap;
}
$this->handleConfig();
$runner = $this->createRunner();
while ($testDetails = fgets(STDIN)) {
if ($memoryTracking) {
gc_collect_cycles();
}
if ($request = TestRequest::decode($testDetails)) {
SerializePrinter::getInstance()->setCurrentRequest($request);
$escapedClassName = str_replace('\\', '\\\\', $request->getClass());
$this->arguments['filter'] = "^{$escapedClassName}::{$request->getName()}\$";
$suite = new \PHPUnit_Framework_TestSuite($request->getClass());
$suite->addTestFile($request->getFilename());
$result = $runner->doRun($suite, $this->arguments);
if ($result->count() === 0) {
$this->showError($request, "Test not found!");
} elseif ($result->count() > 1) {
$this->showError($request, "Multiple tests executed!");
}
}
}
return 0;
}
示例2: run
/**
* Runtime of Master process
* @return void
*/
protected function run()
{
Daemon::$process = $this;
$this->prepareSystemEnv();
class_exists('Timer');
// ensure loading this class
gc_enable();
/* This line must be commented according to current libevent binding implementation. May be uncommented in future. */
//$this->eventBase = new \EventBase;
if ($this->eventBase) {
$this->registerEventSignals();
} else {
$this->registerSignals();
}
$this->workers = new Collection();
$this->collections['workers'] = $this->workers;
$this->ipcthreads = new Collection();
$this->collections['ipcthreads'] = $this->ipcthreads;
Daemon::$appResolver->preload(true);
$this->callbacks = new StackCallbacks();
$this->spawnIPCThread();
$this->spawnWorkers(min(Daemon::$config->startworkers->value, Daemon::$config->maxworkers->value));
$this->timerCb = function ($event) use(&$cbs) {
static $c = 0;
++$c;
if ($c > 0xfffff) {
$c = 1;
}
if ($c % 10 == 0) {
gc_collect_cycles();
}
if (!$this->lastMpmActionTs || microtime(true) - $this->lastMpmActionTs > $this->minMpmActionInterval) {
$this->callMPM();
}
if ($event) {
$event->timeout();
}
};
if ($this->eventBase) {
// we are using libevent in Master
Timer::add($this->timerCb, 1000000.0 * Daemon::$config->mpmdelay->value, 'MPM');
while (!$this->breakMainLoop) {
$this->callbacks->executeAll($this);
if (!$this->eventBase->dispatch()) {
break;
}
}
} else {
// we are NOT using libevent in Master
$lastTimerCall = microtime(true);
while (!$this->breakMainLoop) {
$this->callbacks->executeAll($this);
if (microtime(true) > $lastTimerCall + Daemon::$config->mpmdelay->value) {
call_user_func($this->timerCb, null);
$lastTimerCall = microtime(true);
}
$this->sigwait();
}
}
}
示例3: onRequest
public function onRequest($stream, $remote_addr)
{
$this->in_request = true;
if (false === $this->protocol->readRequest($stream, $remote_addr)) {
return;
}
$context = array('env' => $this->protocol->getHeaders(), 'stdin' => $this->protocol->getStdin(), 'logger' => function ($message) {
echo $message . "\n";
});
$result = call_user_func($this->app, $context);
unset($context);
if (!is_array($result) or count($result) != 3) {
throw new BadProtocolException("App did not return proper result");
}
try {
$this->protocol->writeResponse($result);
} catch (NoStreamException $e) {
$this->log('output stream is gone. cleaning up');
}
// cleanup
unset($result);
$this->protocol->doneWithRequest();
$this->in_request = false;
gc_collect_cycles();
if ($this->should_stop) {
die;
}
}
示例4: tearDown
public function tearDown()
{
parent::tearDown();
// without forcing garbage collection, the DB connections
// are not guaranteed to be disconnected; force GC
gc_collect_cycles();
}
示例5: testHydrationPerformance
/**
* [jwage: 10000 objects in ~6 seconds]
*/
public function testHydrationPerformance()
{
$s = microtime(true);
$batchSize = 20;
for ($i = 1; $i <= 10000; ++$i) {
$user = new CmsUser();
$user->status = 'user';
$user->username = 'user' . $i;
$user->name = 'Mr.Smith-' . $i;
$this->dm->persist($user);
if ($i % $batchSize == 0) {
$this->dm->flush();
$this->dm->clear();
}
}
gc_collect_cycles();
echo "Memory usage before: " . memory_get_usage() / 1024 . " KB" . PHP_EOL;
$users = $this->dm->getRepository('Documents\\CmsUser')->findAll();
foreach ($users as $user) {
}
$this->dm->clear();
gc_collect_cycles();
echo "Memory usage after: " . memory_get_usage() / 1024 . " KB" . PHP_EOL;
$e = microtime(true);
echo 'Hydrated 10000 objects in ' . ($e - $s) . ' seconds' . PHP_EOL;
}
示例6: execute
/**
* @see Command
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$db = $this->getContainer()->get('doctrine')->getManager();
$importlogfile = "import.correct.machines.distributions";
$distributions = $db->getRepository('SywFrontMainBundle:Distributions')->findByLower('machinesnum', '50');
foreach ($distributions as $distribution) {
$machines = null;
unset($machines);
$machines = $distribution->getMachines();
$mnum = count($machines);
$desc = $distribution->getDescription();
if ($mnum <= 49 && ($desc == null || trim($desc) == "")) {
$mnum = -999999;
foreach ($machines as $machine) {
$machine->setDistribution(null);
$db->persist($machine);
}
}
$distribution->setMachinesNum($mnum);
$db->persist($distribution);
$db->flush();
gc_collect_cycles();
}
gc_collect_cycles();
}
示例7: init
public function init($vars, $class = __CLASS__)
{
$this->calle = '';
$this->departamento = '';
$this->piso = '';
$this->numero = '';
if (isset($vars)) {
$reflexion = new ReflectionClass($this);
foreach ($vars as $key => $value) {
foreach ($reflexion->getMethods() as $reflexion_method) {
if ($reflexion_method->name == 'set_' . $key) {
$this->{"set_" . $key}($value);
}
}
if ($key == 'id_localizacion') {
$this->set_id($value);
}
}
unset($reflexion);
/*
foreach ($vars as $key => $value){
if(array_key_exists($key, get_class_vars($class))){
if(method_exists($this, "set_" . $key)){
$this->{"set_". $key}($value);
}
}
if($key == 'id_localizacion') {
$this->set_id($value);
}
}
*/
}
gc_collect_cycles();
}
示例8: parse
public function parse($source, $type = 'file', $is_object = true)
{
if ('file' === $type and $this->isRelativePath($source)) {
$source = $this->path('config', $source);
}
$resolve = [];
foreach ($this->path as $tag => $ignored) {
$resolve['!' . $tag . '_path'] = function ($value) use($tag) {
return $this->path($tag, $value);
};
}
foreach (get_class_methods($this) as $method) {
if (0 === strpos($method, '__resolve_')) {
$tag = substr($method, strlen('__resolve_'));
$resolve['!' . $tag] = [$this, $method];
}
}
$parse = ['file' => 'yaml_parse_file', 'url' => 'yaml_parse_url', 'string' => 'yaml_parse'][$type];
$out = $parse($source, 0, $ignored, $resolve);
if ($is_object) {
$class =& $out['class'];
unset($out['class']);
$out = $class ? new $class($out) : new Factory($out);
}
gc_collect_cycles();
return $out;
}
示例9: import
public function import($file, OutputInterface $output)
{
$csvFile = new CsvFile($file);
$csv = $csvFile->getCsv();
$progress = new ProgressBar($output, 100);
$progress->start();
$cpt = 0;
$cptTotal = 0;
foreach ($csv as $data) {
$etablissement = $this->createFromImport($data, $output);
if (!$etablissement) {
continue;
}
$this->dm->persist($etablissement);
$cptTotal++;
if ($cptTotal % (count($csv) / 100) == 0) {
$progress->advance();
}
if ($cpt > 1000) {
$this->dm->flush();
$this->dm->clear();
gc_collect_cycles();
$cpt = 0;
}
$cpt++;
}
$this->dm->flush();
$progress->finish();
}
示例10: clearMemory
public function clearMemory()
{
accessControlPeer::clearInstancePool();
BatchJobPeer::clearInstancePool();
BulkUploadResultPeer::clearInstancePool();
categoryPeer::clearInstancePool();
EmailIngestionProfilePeer::clearInstancePool();
entryPeer::clearInstancePool();
FileSyncPeer::clearInstancePool();
flavorAssetPeer::clearInstancePool();
flavorParamsConversionProfilePeer::clearInstancePool();
flavorParamsOutputPeer::clearInstancePool();
flavorParamsPeer::clearInstancePool();
kshowPeer::clearInstancePool();
mediaInfoPeer::clearInstancePool();
moderationFlagPeer::clearInstancePool();
moderationPeer::clearInstancePool();
notificationPeer::clearInstancePool();
roughcutEntryPeer::clearInstancePool();
SchedulerConfigPeer::clearInstancePool();
SchedulerPeer::clearInstancePool();
SchedulerStatusPeer::clearInstancePool();
SchedulerWorkerPeer::clearInstancePool();
StorageProfilePeer::clearInstancePool();
syndicationFeedPeer::clearInstancePool();
TrackEntryPeer::clearInstancePool();
uiConfPeer::clearInstancePool();
UploadTokenPeer::clearInstancePool();
// TODO clear default filters
// TODO call all memory cleaner plugins
if (function_exists('gc_collect_cycles')) {
// php 5.3 and above
gc_collect_cycles();
}
}
示例11: fire
/**
* Execute the console command.
*
* @return mixed
*/
public function fire()
{
$points = DestinationPoint::with(['city', 'country'])->whereNull('destination_points.latitude')->orderBy('id')->get();
$count = 0;
foreach ($points as $point) {
$count++;
if (0 == $count % 1000) {
$unprocessed_points = DestinationPoint::with(['city', 'country'])->whereNull('destination_points.latitude')->count();
$collected_cycles_count = gc_collect_cycles();
$this->comment($unprocessed_points . ' unprocessed destination points (' . $this->getMemoryUsage() . ' / ' . $collected_cycles_count . ' cycles)');
}
if (!($country = $point->country()->first())) {
return $this->error("Skipped point #{$point->id}: country not found");
}
if (!($city = $point->city()->first())) {
return $this->error("Skipped point #{$point->id}: city not found");
}
$address = $point->address;
if (false === mb_strpos($address, $city->name)) {
$address = $city->name . ', ' . $address;
}
if (false === mb_strpos($address, $country->name)) {
$address = $country->name . ', ' . $address;
}
try {
if ($point = $this->geocode($point, $address)) {
$point->save();
}
} catch (ChainNoResultException $e) {
$this->error("Not founded {$address}");
}
}
return;
}
示例12: tearDown
protected function tearDown()
{
//Close & unsets
if (is_object($this->em)) {
$this->em->getConnection()->close();
$this->em->close();
}
unset($this->em);
unset($this->container);
unset($this->kern);
unset($this->client);
//Nettoyage des mocks
//http://kriswallsmith.net/post/18029585104/faster-phpunit
$refl = new \ReflectionObject($this);
foreach ($refl->getProperties() as $prop) {
if (!$prop->isStatic() && 0 !== strpos($prop->getDeclaringClass()->getName(), 'PHPUnit_')) {
$prop->setAccessible(true);
$prop->setValue($this, null);
}
}
//Nettoyage du garbage
if (!gc_enabled()) {
gc_enable();
}
gc_collect_cycles();
//Parent
parent::tearDown();
}
示例13: tearDown
protected function tearDown()
{
// Unset to keep database connections from piling up.
$this->backend = null;
// Collect garbages manually to free up connections.
gc_collect_cycles();
}
示例14: flush
/**
* Flush image data from memory.
*
* @param bool $collect_garbage
*/
public function flush($collect_garbage = true)
{
$this->data = null;
if ($collect_garbage) {
gc_collect_cycles();
}
}
示例15: tearDown
public function tearDown()
{
$this->as = null;
$this->ccm = null;
$this->executor = null;
gc_collect_cycles();
}