Compare commits

..

57 Commits

Author SHA1 Message Date
Anatol Belski
41a63dc0b4 Prepare 2.1.8 2018-08-17 15:39:45 +02:00
Anatol Belski
99ae3ca016 Update MariaDB version 2018-08-17 12:35:35 +02:00
Anatol Belski
777542838c Update Nginx version 2018-08-17 12:35:01 +02:00
Anatol Belski
82987940a0 Update bundled PHP 2018-08-16 06:26:07 +02:00
Anatol Belski
45344d7691 Update wp-cli version 2018-08-16 06:21:57 +02:00
Anatol Belski
02a726256a Update Joomla version 2018-08-16 06:20:01 +02:00
Anatol Belski
0a7732ba09 Update Symfony demo version 2018-08-14 09:31:26 +02:00
Anatol Belski
8583bb4f00 Remove explicit composer requirement 2018-08-14 00:14:59 +02:00
Anatol Belski
d6fc46edfd Convert EOL 2018-08-08 16:16:38 +02:00
Anatol Belski
75740674e5 Extend the requirements note 2018-08-07 20:22:44 +02:00
Anatol Belski
e81199f9af Fix command 2018-08-07 17:55:42 +02:00
Anatol Belski
134556d419 Stick to a specific composer version
For now only, until Symfony demo app has fixed issues.
2018-08-07 17:22:18 +02:00
Anatol Belski
6121772665 Upgrade 7zip 2018-08-07 17:12:53 +02:00
Anatol Belski
61dff2296a Retry downloads 2018-08-07 15:46:00 +02:00
Gemorroj
1b8473489f some minor improvements drop unused imports, unused variables, dirname(__FILE__) -> __DIR__, cs fixes, ...
revert some non-obvious getters, explicit specification of abstract classes

null -> NULL

4 space -> tab
2018-08-07 15:43:01 +02:00
Anatol Belski
e494a28d4c Re-enable Drupal and Joomla training 2018-08-02 07:49:31 +02:00
Anatol Belski
22addaf53e Run more drupal training 2018-08-01 11:50:38 +02:00
Anatol Belski
bb8e318a4a Disable this specific URI for causing unnecessary 404s 2018-08-01 09:56:59 +02:00
Anatol Belski
87b60bc9d5 Handle rmtools branch guess through a short path 2018-08-01 09:10:32 +02:00
Anatol Belski
4936f1d7ca This works only if dealing with a git checkout 2018-07-31 21:31:31 +02:00
Anatol Belski
7d56095191 Add support section 2018-07-31 21:20:12 +02:00
Anatol Belski
27c3431e92 Add fallback for rmtools 2018-07-31 21:05:05 +02:00
Anatol Belski
e5ef707fa0 Missed semicolon 2018-07-31 20:21:20 +02:00
Anatol Belski
7df3de21ce Improve URL gathering 2018-07-31 19:57:37 +02:00
Anatol Belski
64b37312f7 Add special handling for master branch name 2018-07-31 19:29:43 +02:00
Anatol Belski
4a219a0d93 Deactivate Drupal training for now, need test 2018-07-31 19:19:19 +02:00
Anatol Belski
5d97e8e483 Add 7.4 ini 2018-07-31 17:36:25 +02:00
Anatol Belski
9a0f799055 Use normal verbosity 2018-07-26 15:27:32 +02:00
Anatol Belski
4f5028d87a Set some vars that are possible unavailable but required by some
frameworks
2018-07-26 14:58:52 +02:00
Anatol Belski
93437db5ae Fix typo 2018-07-26 14:24:10 +02:00
Anatol Belski
0572a3ec52 Rework initialization, use more default values 2018-07-26 13:05:30 +02:00
Anatol Belski
52badef774 Add more verbosity 2018-07-26 09:41:43 +02:00
Anatol Belski
b01fcd36e7 Remove false info 2018-07-26 09:36:20 +02:00
Anatol Belski
fbc6c40761 Redisable joomla case for now 2018-07-26 09:19:03 +02:00
Anatol Belski
7501f5e567 Disable app debug as that would make warnings to exceptions 2018-07-25 20:29:30 +02:00
Anatol Belski
e51c37a375 Fix EOL 2018-07-25 19:38:02 +02:00
Anatol Belski
bd0ab3474c Fix nginx config 2018-07-25 19:37:46 +02:00
Anatol Belski
056e5643fb Fix drupal init 2018-07-25 19:27:49 +02:00
Anatol Belski
e039de13c4 Further setup fixes 2018-07-25 17:43:33 +02:00
Anatol Belski
59926c2903 Fix method call 2018-07-25 17:27:51 +02:00
Anatol Belski
7d2b6cf86f MariaDB is not required 2018-07-25 17:24:35 +02:00
Anatol Belski
29d54c140e Add drupal, yet disabled 2018-07-25 17:17:31 +02:00
Anatol Belski
2ef8899939 Check also urls with appended query string 2018-07-25 15:21:17 +02:00
Anatol Belski
c259e440b6 Unblock Joomla training 2018-07-25 11:35:19 +02:00
Anatol Belski
5470b5ae58 Fix warning 2018-07-25 11:26:24 +02:00
Anatol Belski
795ac45864 Update Joomla URL 2018-07-25 11:00:06 +02:00
Anatol Belski
77408342bc Update version 2018-07-19 19:05:40 +02:00
Anatol Belski
f9aff35c14 Don't die hard if cleanup was failed.
For now at least. The core bug still needs to be fixed.
2018-07-12 12:12:27 +02:00
Anatol Belski
a827b2f18f Revert "Revert "Check return value""
This reverts commit 5352b3744a.
2018-07-12 10:38:00 +02:00
Anatol Belski
5352b3744a Revert "Check return value"
This reverts commit eb3904741a.
2018-07-11 19:13:54 +02:00
Anatol Belski
d816060d55 Make the random suffix shorter 2018-07-11 13:01:26 +02:00
Anatol Belski
da1e89d23a Append a unique string to the instance id 2018-07-11 11:49:47 +02:00
Anatol Belski
eb3904741a Check return value 2018-07-11 10:31:07 +02:00
Anatol Belski
6dc9fd3293 Update some versions 2018-07-09 19:22:15 +02:00
Anatol Belski
1d2dae619e Integrate file cache into the cache scenario 2018-07-09 19:21:46 +02:00
Anatol Belski
2a7f364792 Avoid terminating FCGI proceses after max requests
If a process is terminated before the data is dumped, it has two
consequences

- the data is possibly lost
- the shutdown sequence data are merged into db

Both cases are bad. Especially we don't want to optimize the shutdown
sequence as it is not relevant. Thus, let the processes run for a while,
get the training data dumped and then terminate those processes
manually.
2018-07-02 11:52:52 +02:00
Anatol Belski
36570ced8e Back to dev 2018-06-28 13:33:34 +02:00
72 changed files with 8072 additions and 268 deletions

View File

@@ -12,7 +12,7 @@ The PHP SDK 2.0+ is compatible with PHP 7.0 and above. The compatibility with [o
# Requirements
- `Visual C++ 2015` or `Visual C++ 2017` must be installed prior SDK usage
- `Visual C++ 2015` or `Visual C++ 2017` must be installed prior SDK usage (be sure to install both the C++ and the Windows SDK components)
- if `Cygwin` is installed, please read notes in the pitfalls section
- if a 64-bit build is intended, a 64-bit system is required. Cross compilation of 64-bit on 32-bit system is not supported at the moment
- The PHP SDK was successfully tested on Windows 7 or later, earlier versions might work but are not recommended
@@ -138,6 +138,10 @@ After a training case is implemented and put under `pgo/cases`, the work environ
To skip a training case, add a file named `inactive` into the case folder.
# Support
- Join `#winphp-dev` on Freenode to discuss any ideas or questions
- File an issue on GitHub
# Pitfalls

View File

@@ -1 +1 @@
2.1.7
2.1.8

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,6 +1,6 @@
<?php
include dirname(__FILE__) . "/../lib/php/autoload.php";
include __DIR__ . "/../lib/php/autoload.php";
use SDK\{Config, Exception};
@@ -36,7 +36,7 @@ try {
switch ($name) {
default:
throw new Exception("Unknown switch '$name'");
break;
break;
case "h":
case "help":

View File

@@ -29,10 +29,10 @@ $flags = 0;
$opt = getopt($sopt, $lopt);
foreach ($opt as $name => $val) {
switch ($name) {
case "p":
case "pretty":
$flags = JSON_PRETTY_PRINT;
break;
case "p":
case "pretty":
$flags = JSON_PRETTY_PRINT;
break;
}
}
@@ -85,16 +85,16 @@ foreach ($dirs as $path) {
$dlls = array();
for( $i = 0; $i < $zip->numFiles; $i++ ){
$stat = $zip->statIndex( $i );
for ($i = 0; $i < $zip->numFiles; $i++) {
$stat = $zip->statIndex($i);
if (substr($stat['name'], -3) != "dll") {
continue;
}
$dlls[] = basename($stat['name']);
}
$zip->close();
unset($zip);

View File

@@ -1,6 +1,6 @@
<?php
include dirname(__FILE__) . "/../lib/php/autoload.php";
include __DIR__ . "/../lib/php/autoload.php";
use SDK\Config;
use SDK\Exception;
@@ -21,43 +21,42 @@ try {
$opt = getopt($sopt, $lopt);
foreach ($opt as $name => $val) {
switch ($name) {
case "i":
case "init":
$cmd = "init";
break;
case "ready":
$cmd = "check_init";
break;
case "t":
case "train":
$cmd = "train";
break;
case "u":
case "up":
$cmd = "up";
break;
case "d":
case "down":
$cmd = "down";
break;
case "s":
case "scenario":
$scenario = $val;
break;
case "f":
case "force":
$force = true;
break;
/* XXX This option is for now only integrated for training. It
would make sense to integrate it also with init. */
case "c":
case "cases":
$cases = explode(",", $val);
break;
case "h": case "help":
usage(0);
break;
case "i":
case "init":
$cmd = "init";
break;
case "ready":
$cmd = "check_init";
break;
case "t":
case "train":
$cmd = "train";
break;
case "u":
case "up":
$cmd = "up";
break;
case "d":
case "down":
$cmd = "down";
break;
case "s":
case "scenario":
$scenario = $val;
break;
case "f":
case "force":
$force = true;
break;
/* XXX This option is for now only integrated for training. It
would make sense to integrate it also with init. */
case "c":
case "cases":
$cases = explode(",", $val);
break;
case "h": case "help":
usage(0);
break;
}
}

BIN
bin/sqlite3.exe Normal file

Binary file not shown.

View File

@@ -1,7 +1,7 @@
<?php
spl_autoload_register(function($name) {
$fl = dirname(__FILE__) . DIRECTORY_SEPARATOR . "libsdk" . DIRECTORY_SEPARATOR . $name . ".php";
$fl = __DIR__ . DIRECTORY_SEPARATOR . "libsdk" . DIRECTORY_SEPARATOR . $name . ".php";
if (file_exists($fl)) {
require_once $fl;

View File

@@ -2,7 +2,7 @@
namespace SDK\Build\Dependency;
use SDK\{Config, Exception, FileOps};
use SDK\{Exception, FileOps};
class Fetcher
{
@@ -13,6 +13,7 @@ class Fetcher
protected $stability;
protected $arch;
protected $series;
protected $scheme;
public function __construct(string $host, int $port, string $scheme = "https", string $arch = NULL, string $stability = NULL, Series $series = NULL)
@@ -22,6 +23,7 @@ class Fetcher
$this->host = $host;
$this->port = $port;
$this->scheme = $scheme;
$this->series = $series;
}/*}}}*/
public function getSeries() : Series

View File

@@ -11,6 +11,7 @@ class Manager
protected $stability;
protected $arch;
protected $path;
protected $cache;
protected $series;
protected $fetcher;
protected $updatesFlag = NULL;
@@ -41,7 +42,7 @@ class Manager
public function updatesAvailable() : bool
{/*{{{*/
if (!is_null($this->updatesFlag)) {
if (NULL !== $this->updatesFlag) {
return $this->updatesFlag;
}

View File

@@ -44,7 +44,6 @@ class Series
public function getName() : string
{/*{{{*/
$base = Config::getDepsBaseUri();
$branch_data = Config::getCurrentBranchData();
$file = "packages-" . Config::getCurrentBranchName() . "-{$branch_data['crt']}-{$this->arch}-{$this->stability}.txt";

View File

@@ -2,15 +2,17 @@
namespace SDK\Build\PGO\Abstracts;
use SDK\Build\PGO\Interfaces\Server;
use SDK\Build\PGO\PHP\CLI;
use SDK\Build\PGO\Config as PGOConfig;
use SDK\{Config as SDKConfig, Exception, FileOps};
use SDK\{Config as SDKConfig, Exception};
abstract class PHP
{
protected $php_root;
protected $php_ext_root;
protected $opcache_file_cache;
protected $id;
protected $scenario;
protected $conf;
protected function setupPaths()
{
@@ -23,6 +25,9 @@ abstract class PHP
} else {
$this->php_ext_root = $this->php_root;
}
if ("cache" == $this->scenario) {
$this->opcache_file_cache = SDKConfig::getTmpDir() . DIRECTORY_SEPARATOR . $this->id;
}
}
/* TODO Might be improved. */
@@ -39,12 +44,22 @@ abstract class PHP
$deps_root = SDKConfig::getDepsLocalPath();
foreach ($env as $k => $v) {
if (strtoupper($k) == "PATH") {
$env[$k] = "$deps_root" . DIRECTORY_SEPARATOR . "bin;" . $env[$k];
$env[$k] = $deps_root . DIRECTORY_SEPARATOR . "bin;" . $env[$k];
break;
}
}
}
$drive = getenv("HOMEDRIVE");
$path = getenv("HOMEPATH");
if (!$drive || !$path) {
$p = SDKConfig::getTmpDir();
$drive = substr($p, 0, 2);
$path = substr($p, 2);
putenv("HOMEDRIVE=$drive");
putenv("HOMEPATH=$path");
}
return $env;
}
@@ -95,7 +110,7 @@ abstract class PHP
}
}
if (is_null($ret)) {
if (NULL === $ret) {
throw new Exception("Failed to determine the test PHP version.");
}
@@ -147,6 +162,11 @@ abstract class PHP
}
}
/* Special handling, otherwise it'll need functionality to extrapolate ini values. */
if ("cache" == $this->scenario) {
$tpl_vars[$this->conf->buildTplVarName("php", "opcache", "file_cache")] = $this->opcache_file_cache;
}
$this->conf->processTplFile(
$this->getIniTplFilename(),
$ret,
@@ -174,8 +194,8 @@ abstract class PHP
public function exec(string $php_cmd, string $args = NULL, array $extra_env = array()) : int
{
$env = $this->createEnv();
$exe = $this->getExeFilename();
$ini = $this->getIniFilename();
$exe = $this->getExeFilename();
$ini = $this->getIniFilename();
$cert_path = getenv("PHP_SDK_ROOT_PATH") . "\\msys2\\usr\\ssl\\cert.pem";
$ini .= " -d curl.cainfo=$cert_path";
@@ -203,7 +223,7 @@ abstract class PHP
$env[$k] = $v;
}
$cmd = "$exe -n -c $ini " . ($args ? "$args " : "") . "$php_cmd";
$cmd = "$exe -n -c $ini " . ($args ? "$args " : "") . $php_cmd;
$desc = array(
0 => array("file", "php://stdin", "r"),
@@ -214,5 +234,13 @@ abstract class PHP
return proc_close($p);
}
}
public function getIdString(): string
{
return $this->getVersion() . "-"
. SDKConfig::getCurrentCrtName() . "-"
. ($this->isThreadSafe() ? "ts" : "nts") . "-"
. ($this->is64bit() ? "x64" : "x86")
. "-" . substr(md5(uniqid()), 0, 8);
}
}

View File

@@ -4,7 +4,7 @@ namespace SDK\Build\PGO\Abstracts;
use SDK\Build\PGO\Interfaces;
class Server
abstract class Server
{
public function getName() : string
{
@@ -17,6 +17,3 @@ class Server
}
}

View File

@@ -2,11 +2,10 @@
namespace SDK\Build\PGO\Abstracts;
use SDK\Build\PGO\Config as PGOConfig;
use SDK\{Config as SDKConfig, Exception, FileOps};
use SDK\FileOps;
use SDK\Build\PGO\Tool;
class TrainingCase
abstract class TrainingCase
{
use FileOps;
@@ -14,6 +13,8 @@ class TrainingCase
const TYPE_CLI = "cli";
protected $stat = array();
/** @var \SDK\Build\PGO\Config */
protected $conf;
public function getType() : string
{
@@ -148,4 +149,3 @@ class TrainingCase
return $ret;
}
}

View File

@@ -2,7 +2,7 @@
namespace SDK\Build\PGO;
use SDK\{Config as SDKConfig, Exception};
use SDK\Exception;
class Config
{
@@ -18,7 +18,7 @@ class Config
protected $tpl_vars = array();
protected $srv = array();
public function __construct(int $mode = MODE_RUN)
public function __construct(int $mode = self::MODE_RUN)
{
if (self::MODE_CHECK_INIT == $mode) {
// XXX The check is simple right now, so this is sufficient.
@@ -40,7 +40,6 @@ class Config
$this->mode = $mode;
$base = getenv("PHP_SDK_ROOT_PATH");
if (self::MODE_INIT == $mode) {
foreach (array("nginx", "mariadb", "postgresql", "php") as $i) {
$this->importSectionFromDir($i, $this->getTplDir() . DIRECTORY_SEPARATOR . $i);
@@ -279,7 +278,7 @@ class Config
public function processTplFile(string $tpl_fn, string $dst_fn, array $additional_vars = array()) : void
{
if (!file_exists($tpl_fn)) {
throw new Exception("Template file '$fn' doesn't exist.");
throw new Exception("Template file '$tpl_fn' doesn't exist.");
}
$s = file_get_contents($tpl_fn);
@@ -368,4 +367,3 @@ class Config
return $ret;
}
}

View File

@@ -2,13 +2,12 @@
namespace SDK\Build\PGO;
use SDK\{Config as SDKConfig, Exception, Lock};
use SDK\{Exception, Lock};
use SDK\Build\PGO\Config as PGOConfig;
use SDK\Build\PGO\Server\{MariaDB, NGINX, PostgreSQL};
use SDK\Build\PGO\PHP;
use SDK\Build\PGO\Tool\{PGO, PackageWorkman};
use SDK\Build\PGO\Interfaces\TrainingCase;
use SDK\Build\PGO\TrainingCaseIterator;
/* TODO add bench action */
@@ -79,38 +78,38 @@ class Controller
$this->conf = $this->setupConfig($this->cmd);
switch ($this->cmd) {
default:
throw new Exception("Unknown action '{$this->cmd}'.");
break;
case "init":
$lk = new Lock("pgo_init");
if (!$lk->locked()) {
echo "Another process runs initialization right now, waiting.", PHP_EOL;
$lk->exclusive(true);
echo "Another process finished running initialization, I quit as well.", PHP_EOL;
return;
}
$this->init($force);
break;
case "train":
$lk = new Lock("pgo_train");
if (!$lk->locked()) {
echo "Another process runs training right now, I have to wait.", PHP_EOL;
$lk->exclusive(true);
echo "Another process finished training, I may continue.", PHP_EOL;
}
$this->train();
break;
case "up":
$this->up();
break;
default:
throw new Exception("Unknown action '{$this->cmd}'.");
break;
case "init":
$lk = new Lock("pgo_init");
if (!$lk->locked()) {
echo "Another process runs initialization right now, waiting.", PHP_EOL;
$lk->exclusive(true);
echo "Another process finished running initialization, I quit as well.", PHP_EOL;
return;
}
$this->init($force);
break;
case "train":
$lk = new Lock("pgo_train");
if (!$lk->locked()) {
echo "Another process runs training right now, I have to wait.", PHP_EOL;
$lk->exclusive(true);
echo "Another process finished training, I may continue.", PHP_EOL;
}
$this->train();
break;
case "up":
$this->up();
break;
case "down":
$this->down($force);
break;
case "check_init":
// pass
break;
case "down":
$this->down($force);
break;
case "check_init":
// pass
break;
}
}
@@ -141,6 +140,7 @@ class Controller
if (!file_exists($composer) || $force) {
/* XXX this needs to go into the config, specifically for composer maybe even separate class. */
$url = "https://getcomposer.org/installer";
/* XXX remove the explicit version option when symfony demo is fixed. */
$tool = $this->conf->getToolsDir() . DIRECTORY_SEPARATOR . "composer-setup.php";
$pw->fetch($url, $tool, $force);
$php->exec("$tool --install-dir=" . $this->conf->getToolsDir());

View File

@@ -2,7 +2,6 @@
namespace SDK\Build\PGO\Interfaces;
use SDK\Build\PGO\Config;
use SDK\Build\PGO\Tool\PackageWorkman;
interface PHP
@@ -15,4 +14,3 @@ interface PHP
public function getVersion(bool $short = false) : string;
public function getExeFilename() : string;
}

View File

@@ -2,7 +2,6 @@
namespace SDK\Build\PGO\Interfaces;
use SDK\Build\PGO\Config;
use SDK\Build\PGO\Tool\PackageWorkman;
interface Server
@@ -14,4 +13,3 @@ interface Server
public function down(bool $force = false) : void;
public function getName() : string;
}

View File

@@ -10,4 +10,3 @@ interface DB extends Interfaces\Server
public function __construct(Config $conf);
public function query(string $s, string $db = NULL) : void;
}

View File

@@ -11,4 +11,3 @@ interface HTTP extends Interfaces\Server
public function getPhp() : Interfaces\PHP;
public function addServer(string $part_tpl_fn, array $tpl_vars = array());
}

View File

@@ -25,4 +25,3 @@ interface TrainingCase
/* Get training type, it's like "web", "cli", etc.*/
public function getType() : string;
}

View File

@@ -5,17 +5,19 @@ namespace SDK\Build\PGO\PHP;
use SDK\Build\PGO\Interfaces;
use SDK\Build\PGO\Abstracts;
use SDK\Build\PGO\Config as PGOConfig;
use SDK\{Config as SDKConfig, Exception, FileOps};
use SDK\{Exception};
use SDK\Build\PGO\Tool\PackageWorkman;
class CLI extends Abstracts\PHP implements Interfaces\PHP
{
protected $conf;
public function __construct(PGOConfig $conf)
{
$this->conf = $conf;
$this->scenario = $conf->getScenario();
// Don't do that, it'll be a recursive dependency.
// Once we need to train CLI, we'll need to split
// a new class, this one is a utility class.
//$this->id = $this->getIdString();
$this->setupPaths();
}
@@ -50,7 +52,4 @@ class CLI extends Abstracts\PHP implements Interfaces\PHP
return $exe;
}
}

View File

@@ -5,12 +5,13 @@ namespace SDK\Build\PGO\PHP;
use SDK\Build\PGO\Interfaces;
use SDK\Build\PGO\Abstracts;
use SDK\Build\PGO\Config as PGOConfig;
use SDK\{Config as SDKConfig, Exception, FileOps};
use SDK\{Exception, FileOps};
use SDK\Build\PGO\Tool\PackageWorkman;
class FCGI extends Abstracts\PHP implements Interfaces\PHP
{
protected $conf;
use FileOps;
protected $is_tcp;
public function __construct(PGOConfig $conf, bool $is_tcp)
@@ -22,6 +23,7 @@ class FCGI extends Abstracts\PHP implements Interfaces\PHP
$this->conf = $conf;
$this->is_tcp = $is_tcp;
$this->scenario = $conf->getScenario();
$this->id = $this->getIdString();
$this->setupPaths();
}
@@ -64,6 +66,15 @@ echo "PHP FCGI initialization done.\n";*/
{
echo "Starting PHP FCGI.\n";
if ("cache" == $this->scenario) {
if (file_exists($this->opcache_file_cache)) {
$this->rm($this->opcache_file_cache);
}
if (!mkdir($this->opcache_file_cache)) {
throw new Exception("Failed to create '{$this->opcache_file_cache}'");
}
}
$exe = $this->getExeFilename();
$ini = $this->getIniFilename();
$host = $this->conf->getSectionItem("php", "fcgi", "host");
@@ -82,6 +93,10 @@ echo "PHP FCGI initialization done.\n";*/
/* Give some time, it might be slow on PGI enabled proc. */
sleep(3);
/*while(false !== ($s = fread($pipes[2], 1024))) {
echo "$s";
}*/
$c = proc_close($p);
if ($c) {
@@ -99,7 +114,15 @@ echo "PHP FCGI initialization done.\n";*/
exec("taskkill /f /im php-cgi.exe >nul 2>&1");
/* XXX Add cleanup interface. */
if ("cache" == $this->scenario) {
try {
$this->rm($this->opcache_file_cache);
} catch (\UnexpectedValueException $e) {
echo $e->getMessage(), "\n";
}
}
echo "PHP FCGI stopped.\n";
}
}

View File

@@ -5,7 +5,7 @@ namespace SDK\Build\PGO\Server;
use SDK\Build\PGO\Interfaces\Server\DB;
use SDK\Build\PGO\Abstracts\Server;
use SDK\Build\PGO\Config as PGOConfig;
use SDK\{Config as SDKConfig, Exception, FileOps};
use SDK\{Exception, FileOps};
use SDK\Build\PGO\Tool\PackageWorkman;
class MariaDB extends Server implements DB
@@ -115,7 +115,7 @@ class MariaDB extends Server implements DB
$pass_arg = $pass ? "-p$pass " : "";
$db_arg = $db ? "-D $db" : "";
$ret = shell_exec(".\\bin\\mysql.exe -u $user $pass_arg -h $host -P $port $db_arg -e \"$s\"");
shell_exec(".\\bin\\mysql.exe -u $user $pass_arg -h $host -P $port $db_arg -e \"$s\"");
//var_dump($this->base, getcwd(), ".\\bin\\mysql.exe -u $user $pass_arg -h $host -P $port -e \"$s\"");
chdir($cwd);
@@ -136,9 +136,8 @@ class MariaDB extends Server implements DB
$pass_arg = $pass ? "-p$pass " : "";
$db_arg = $db ? "-D $db" : "";
$ret = shell_exec(".\\bin\\mysql.exe -u $user $pass_arg -h $host -P $port $db_arg < \"$path\"");
shell_exec(".\\bin\\mysql.exe -u $user $pass_arg -h $host -P $port $db_arg < \"$path\"");
chdir($cwd);
}
}

View File

@@ -5,7 +5,7 @@ namespace SDK\Build\PGO\Server;
use SDK\Build\PGO\Interfaces;
use SDK\Build\PGO\Abstracts;
use SDK\Build\PGO\{Config as PGOConfig};
use SDK\{Config as SDKConfig, Exception, FileOps};
use SDK\{Exception, FileOps};
use SDK\Build\PGO\Tool\PackageWorkman;
class NGINX extends Abstracts\Server implements Interfaces\Server\HTTP
@@ -29,7 +29,6 @@ class NGINX extends Abstracts\Server implements Interfaces\Server\HTTP
$nginx_conf_in = $this->conf->getTplDir($this->name) . DIRECTORY_SEPARATOR . "nginx.conf";
$conf_fn = $this->base . DIRECTORY_SEPARATOR . "conf" . DIRECTORY_SEPARATOR . "nginx.conf";
$vars = array();
$port = $this->conf->getSectionItem($this->name, "port");
if (!$port) {
$port = $this->conf->getNextPort();
@@ -148,4 +147,3 @@ class NGINX extends Abstracts\Server implements Interfaces\Server\HTTP
}
}
}

View File

@@ -5,7 +5,7 @@ namespace SDK\Build\PGO\Server;
use SDK\Build\PGO\Interfaces\Server\DB;
use SDK\Build\PGO\Abstracts\Server;
use SDK\Build\PGO\Config as PGOConfig;
use SDK\{Config as SDKConfig, Exception, FileOps};
use SDK\{Exception, FileOps};
use SDK\Build\PGO\Tool\PackageWorkman;
class PostgreSQL extends Server implements DB
@@ -90,10 +90,6 @@ class PostgreSQL extends Server implements DB
echo "Stopping " . $this->name . ".\n";
$user = $this->conf->getSectionItem($this->name, "user");
$pass = $this->conf->getSectionItem($this->name, "pass");
$cmd = $this->base . DIRECTORY_SEPARATOR . "bin" . DIRECTORY_SEPARATOR . "pg_ctl.exe stop -D " . $this->data_dir . " -m fast";
exec($cmd);
@@ -108,7 +104,6 @@ class PostgreSQL extends Server implements DB
public function createDb(string $db_name) : void
{
$user = $this->conf->getSectionItem($this->name, "user");
$pass = $this->conf->getSectionItem($this->name, "pass");
$host = $this->conf->getSectionItem($this->name, "host");
$port = $this->conf->getSectionItem($this->name, "port");
@@ -119,7 +114,6 @@ class PostgreSQL extends Server implements DB
public function dropDb(string $db_name) : void
{
$user = $this->conf->getSectionItem($this->name, "user");
//$pass = $this->conf->getSectionItem($this->name, "pass");
$host = $this->conf->getSectionItem($this->name, "host");
$port = $this->conf->getSectionItem($this->name, "port");
@@ -132,13 +126,11 @@ class PostgreSQL extends Server implements DB
$ret = NULL;
$user = $this->conf->getSectionItem($this->name, "user");
//$pass = $this->conf->getSectionItem($this->name, "pass");
$host = $this->conf->getSectionItem($this->name, "host");
$port = $this->conf->getSectionItem($this->name, "port");
$db_arg = $db ? "-d $db" : "";
$cmd = $this->base . DIRECTORY_SEPARATOR . "bin" . DIRECTORY_SEPARATOR . "psql.exe -h $host -p $port -U $user $db_arg -c \"$s\"";
$ret = shell_exec($cmd);
shell_exec($cmd);
}
}

View File

@@ -2,7 +2,7 @@
namespace SDK\Build\PGO\Tool;
use SDK\{Config as SDKConfig, Exception};
use SDK\Exception;
use SDK\Build\PGO\Config as PGOConfig;
use SDK\Build\PGO\Interfaces;
@@ -63,11 +63,11 @@ class PGO
$pgc = $this->getPgcName($base);
$pgd = $this->getPgdName($base);
`pgosweep $base $pgc`;
shell_exec("pgosweep $base $pgc");
//passthru("pgosweep $base $pgc");
if ($merge) {
`pgomgr /merge:1000 $pgc $pgd`;
shell_exec("pgomgr /merge:1000 $pgc $pgd");
//passthru("pgomgr /merge:1000 $pgc $pgd");
/* File is already spent, no need to keep it.
If seeing linker warnings about no pgc
@@ -98,10 +98,9 @@ class PGO
$its = glob($this->php->getRootDir() . DIRECTORY_SEPARATOR . "*.pgd");
$its = array_merge($its, glob($this->php->getExtRootDir() . DIRECTORY_SEPARATOR . "*" . DIRECTORY_SEPARATOR . "*.pgd"));
foreach (array_unique($its) as $pgd) {
`pgomgr /clear $pgd`;
shell_exec("pgomgr /clear $pgd");
//passthru("pgomgr /clear $pgd");
}
}
}
}

View File

@@ -2,7 +2,7 @@
namespace SDK\Build\PGO\Tool;
use SDK\{Config as SDKConfig, Exception, FileOps};
use SDK\{Exception, FileOps};
use SDK\Build\PGO\Config as PGOConfig;
@@ -47,11 +47,10 @@ class PackageWorkman
echo "Unpacking '$cache_fn' to '$tgt_name'\n";
try {
$this->unzip($cache_fn, $zip_tgt_dn, $tgt_bn);
} catch (Throwable $e) {
} catch (\Throwable $e) {
$this->rm($cache_fn);
throw $e;
}
}
}
}

View File

@@ -4,7 +4,7 @@ namespace SDK\Build\PGO\Tool;
use SDK\{Config as SDKConfig, Exception};
use SDK\Build\PGO\Config as PGOConfig;
use SDK\Build\PGO\Interfaces\{TrainingCase, Server, Server\DB, PHP};
use SDK\Build\PGO\Interfaces\TrainingCase;
class Training
{
@@ -15,8 +15,9 @@ class Training
{
$this->conf = $conf;
$this->t_case = $t_case;
if (!in_array($this->t_case->getType(), array("web", "cli"))) {
$type = $this->t_case->getType();
if (!in_array($type, array("web", "cli"))) {
throw new Exception("Unknown training type '$type'.");
}
}
@@ -107,8 +108,7 @@ class Training
public function run(int $max_runs = 1, ?array &$stat = array()) : void
{
$type = $this->t_case->getType();
switch ($type)
{
switch ($type) {
case "web":
$this->runWeb($max_runs, $stat);
break;

View File

@@ -2,7 +2,6 @@
namespace SDK\Build\PGO;
use SDK\{Config as SDKConfig, Exception, FileOps};
use SDK\Build\PGO\Config as PGOConfig;
@@ -21,7 +20,7 @@ class TrainingCaseIterator implements \Iterator
$items = glob($this->conf->getCasesTplDir() . DIRECTORY_SEPARATOR . "*");
foreach ($items as $it) {
if(!is_dir($it)) {
if (!is_dir($it)) {
continue;
}
@@ -53,7 +52,7 @@ class TrainingCaseIterator implements \Iterator
public function current()
{
$base = $this->items[$this->idx];
$base = $this->items[$this->idx];
$ns = basename($base);
/* Don't overwrite generated config. */
@@ -97,6 +96,4 @@ class TrainingCaseIterator implements \Iterator
return $this->el->getName();
}
}

View File

@@ -2,10 +2,6 @@
namespace SDK;
use SDK\Config;
use SDK\Cache;
use SDK\Exception;
class Cache
{
protected $id;
@@ -48,7 +44,7 @@ class Cache
$old_sum = md5_file($p);
$new_sum = md5($content);
return $old_sum != $new_sum;
return $old_sum !== $new_sum;
}/*}}}*/
public function cacheContent(string $path, string $content, bool $relative = false) : void
@@ -64,7 +60,7 @@ class Cache
do {
$got = fwrite($fd, substr($content, $wrote));
if (false == $got) {
if (false === $got) {
break;
}
$wrote += $got;

View File

@@ -3,8 +3,6 @@
namespace SDK;
use SDK\Build\Dependency\Fetcher;
use SDK\Cache;
use SDK\Exception;
class Config
{
@@ -183,6 +181,11 @@ class Config
$branch = NULL;
$found = false;
$rmtools_branch = getenv("PHP_RMTOOLS_PHP_BUILD_BRANCH");
if ("master" == $rmtools_branch) {
return "master";
}
/* Try to figure out the branch. The worky scenarios are
- CWD is in php-src
- phpize is on the path
@@ -213,6 +216,19 @@ class Config
if (is_numeric($major) && is_numeric($minor)) {
$branch = "$major.$minor";
}
/* Verify that we use an available branch name. Master has some
version, but no dedicated series. For master, it rather
makes sense to use master as branch name. */
$git = trim(shell_exec("where git.exe"));
if ($git && is_dir(".git")) {
$cmd = "\"$git\" branch";
$ret = trim(shell_exec($cmd));
if (preg_match_all(",\*\s+master,", $ret) > 0) {
$branch = "master";
}
}
}
return $branch;
@@ -277,10 +293,10 @@ class Config
}
}
if (!$ret["stability"]) {
if (!@$ret["stability"]) {
throw new Exception("Failed to find config with stability '" . self::getCurrentStabilityName() . "'");
}
if (!$ret["crt"]) {
if (!@$ret["crt"]) {
throw new Exception("Failed to find config with arch '" . self::getCurrentArchName() . "'");
}

View File

@@ -2,9 +2,6 @@
namespace SDK;
use SDK\Config;
use SDK\Exception;
trait FileOps
{
protected function md(string $name = "", bool $tmp = false) : string
@@ -119,6 +116,9 @@ trait FileOps
protected function download(string $url, string $dest_fn = NULL) : ?string
{/*{{{*/
$fd = NULL;
$retry = 0;
retry:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
@@ -146,6 +146,9 @@ trait FileOps
if ($dest_fn) {
fclose($fd);
}
if ($retry++ < 3) {
goto retry;
}
throw new Exception($err);
}
@@ -193,7 +196,7 @@ trait FileOps
$name = substr($name, 0, -1);*/
$name = rtrim($stat["name"], "/");
while (strchr($name, '/') !== false) {
while (strstr($name, '/') !== false) {
$name = dirname($name);
}

View File

@@ -2,8 +2,6 @@
namespace SDK;
use SDK\{Config, Exception};
class Lock
{
protected $fd;

View File

@@ -0,0 +1,123 @@
<?php
namespace drupal;
use SDK\Build\PGO\Abstracts;
use SDK\Build\PGO\Interfaces;
use SDK\Build\PGO\Config;
use SDK\Build\PGO\PHP;
use SDK\Exception;
use SDK\Build\PGO\Tool;
class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\TrainingCase
{
protected $base;
protected $nginx;
protected $php;
protected $max_runs = 8;
public function __construct(Config $conf, ?Interfaces\Server $nginx, ?Interfaces\Server\DB $maria)
{
if (!$nginx) {
throw new Exception("Invalid NGINX object");
}
$this->conf = $conf;
$this->base = $this->conf->getCaseWorkDir($this->getName());
$this->nginx = $nginx;
$this->php = $nginx->getPhp();
}
public function getName() : string
{
return __NAMESPACE__;
}
public function getJobFilename() : string
{
return $this->conf->getJobDir() . DIRECTORY_SEPARATOR . $this->getName() . ".txt";
}
protected function getToolFn() : string
{
return $this->base . DIRECTORY_SEPARATOR . implode(DIRECTORY_SEPARATOR, array("vendor", "drush", "drush", "drush"));
}
protected function setupDist() : void
{
$db_path = str_replace("\\", "/", $this->base) . "/drupal.sqlite3";
if (!file_exists($db_path)) {
echo "Setting up in '{$this->base}'\n";
$php = new PHP\CLI($this->conf);
$cmd = $this->getToolFn() . " site-install demo_umami --db-url=sqlite://$db_path --account-name=admin --account-pass=adminpass --yes";
$php->exec($cmd);
}
$port = $this->getHttpPort();
$host = $this->getHttpHost();
$vars = array(
$this->conf->buildTplVarName($this->getName(), "docroot") => str_replace("\\", "/", $this->base . DIRECTORY_SEPARATOR . "web"),
);
$tpl_fn = $this->conf->getCasesTplDir($this->getName()) . DIRECTORY_SEPARATOR . "nginx.partial.conf";
$this->nginx->addServer($tpl_fn, $vars);
}
public function setupUrls()
{
$this->nginx->up();
$url = "http://" . $this->getHttpHost() . ":" . $this->getHttpPort();
$s = file_get_contents($url);
$this->nginx->down(true);
echo "Generating training urls.\n";
$lst = array();
if (preg_match_all(", href=\"([^\"]+)\",", $s, $m)) {
foreach ($m[1] as $u) {
$p = parse_url($u, PHP_URL_PATH);
if (strlen($p) >= 2 && "/" == $p[0] && "/" != $p[1] && !in_array(substr($p, -3), array("css", "xml", "ico"))) {
$ur = "http://" . $this->getHttpHost() . ":" . $this->getHttpPort() . $u;
if (!in_array($ur, $lst)) {
$lst[] = $ur;
}
}
}
}
if (empty($lst)) {
printf("\033[31m WARNING: Training URL list is empty, check the regex and the possible previous error messages!\033[0m\n");
}
$fn = $this->getJobFilename();
$s = implode("\n", $lst);
if (strlen($s) !== file_put_contents($fn, $s)) {
throw new Exception("Couldn't write '$fn'.");
}
}
public function prepareInit(Tool\PackageWorkman $pw, bool $force = false) : void
{
$php = new PHP\CLI($this->conf);
$composer = $this->conf->getToolsDir() . DIRECTORY_SEPARATOR . "composer.phar";
$cmd = $composer . " create-project drupal-composer/drupal-project:8.x-dev {$this->base} --stability dev --no-interaction";
$php->exec($cmd);
}
public function init() : void
{
echo "Initializing " . $this->getName() . ".\n";
$this->setupDist();
$this->setupUrls();
echo $this->getName() . " initialization done.\n";
echo $this->getName() . " site configured to run under " . $this->getHttpHost() . ":" . $this->getHttpPort() . "\n";
}
}

View File

@@ -0,0 +1,19 @@
server {
listen PHP_SDK_PGO_DRUPAL_HTTP_PORT;
server_name PHP_SDK_PGO_DRUPAL_HTTP_HOST;
root PHP_SDK_PGO_DRUPAL_DOCROOT;
index index.html index.htm index.php;
location / {
try_files $uri /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass PHP_SDK_PGO_PHP_FCGI_HOST:PHP_SDK_PGO_PHP_FCGI_PORT;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

View File

@@ -0,0 +1,5 @@
{
"type": "web",
"srv_http": "nginx",
"srv_db": null
}

View File

@@ -6,12 +6,11 @@ use SDK\Build\PGO\Abstracts;
use SDK\Build\PGO\Interfaces;
use SDK\Build\PGO\Config;
use SDK\Build\PGO\PHP;
use SDK\{Config as SDKConfig, Exception, FileOps};
use SDK\Exception;
use SDK\Build\PGO\Tool;
class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\TrainingCase
{
protected $conf;
protected $base;
protected $nginx;
protected $php;
@@ -116,7 +115,20 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T
$lst = array();
if (preg_match_all(", href=\"([^\"]+)\",", $s, $m)) {
foreach ($m[1] as $u) {
if ("/" == $u[0] && "/" != $u[1] && !in_array(substr($u, -3), array("css", "xml", "ico"))) {
$h = parse_url($u, PHP_URL_HOST);
$s = parse_url($u, PHP_URL_SCHEME);
if ($h && $s) {
if ($this->getHttpHost() != $h) {
continue;
}
if (!in_array($u, $lst)) {
$lst[] = $u;
}
continue;
}
$p = parse_url($u, PHP_URL_PATH);
if (strlen($p) >= 2 && "/" == $p[0] && "/" != $p[1] && !in_array(substr($p, -3), array("css", "xml", "ico")) &&
"/using-joomla/extensions/components/news-feeds-component/single-news-feed" != $p) {
$ur = "http://" . $this->getHttpHost() . ":" . $this->getHttpPort() . $u;
if (!in_array($ur, $lst)) {
$lst[] = $ur;
@@ -163,8 +175,6 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T
$this->setupUrls();
echo $this->getName() . " initialization done.\n";
echo $this->getName() . " site configured to run under " . $this->getHttpHost() . ":" .$this->getHttpPort() . "\n";
echo $this->getName() . " site configured to run under " . $this->getHttpHost() . ":" . $this->getHttpPort() . "\n";
}
}

View File

@@ -1,5 +1,5 @@
{
"joomla_zip_url": "https://github.com/joomla/joomla-cms/releases/download/3.7.2/Joomla_3.7.2-Stable-Full_Package.zip",
"joomla_zip_url": "https://github.com/joomla/joomla-cms/releases/download/3.8.11/Joomla_3.8.11-Stable-Full_Package.zip",
"type": "web",
"srv_http": "nginx",
"srv_db": "mariadb"

View File

@@ -6,12 +6,11 @@ use SDK\Build\PGO\Abstracts;
use SDK\Build\PGO\Interfaces;
use SDK\Build\PGO\Config;
use SDK\Build\PGO\PHP;
use SDK\{Config as SDKConfig, Exception, FileOps};
use SDK\Exception;
use SDK\Build\PGO\Tool;
class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\TrainingCase
{
protected $conf;
protected $base;
protected $nginx;
protected $php;
@@ -133,7 +132,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T
if (!file_exists($lock) || $force) {
$composer = $this->conf->getToolsDir() . DIRECTORY_SEPARATOR . "composer.phar";
$composer_cmd = file_exists($lock) ? "update" : "install";
$cmd = $this->conf->getToolsDir() . DIRECTORY_SEPARATOR . "composer.phar $composer_cmd --no-dev --working-dir=" . $this->conf->getCaseWorkDir($this->getName());
$cmd = $composer . " $composer_cmd --no-dev --working-dir=" . $this->conf->getCaseWorkDir($this->getName());
$php->exec($cmd);
}
@@ -155,8 +154,6 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T
$this->setupUrls();
echo $this->getName() . " initialization done.\n";
echo $this->getName() . " site configured to run under " . $this->getHttpHost() . ":" .$this->getHttpPort() . "\n";
echo $this->getName() . " site configured to run under " . $this->getHttpHost() . ":" . $this->getHttpPort() . "\n";
}
}

View File

@@ -6,12 +6,11 @@ use SDK\Build\PGO\Abstracts;
use SDK\Build\PGO\Interfaces;
use SDK\Build\PGO\Config;
use SDK\Build\PGO\PHP;
use SDK\{Config as SDKConfig, Exception, FileOps};
use SDK\Exception;
use SDK\Build\PGO\Tool;
class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\TrainingCase
{
protected $conf;
protected $base;
protected $nginx;
protected $maria;
@@ -127,8 +126,6 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T
$this->setupUrls();
echo $this->getName() . " initialization done.\n";
echo $this->getName() . " site configured to run under " . $this->getHttpHost() . ":" .$this->getHttpPort() . "\n";
echo $this->getName() . " site configured to run under " . $this->getHttpHost() . ":" . $this->getHttpPort() . "\n";
}
}

View File

@@ -6,12 +6,11 @@ use SDK\Build\PGO\Abstracts;
use SDK\Build\PGO\Interfaces;
use SDK\Build\PGO\Config;
use SDK\Build\PGO\PHP;
use SDK\{Config as SDKConfig, Exception, FileOps};
use SDK\Exception;
use SDK\Build\PGO\Tool;
class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\TrainingCase
{
protected $conf;
protected $base;
protected $nginx;
protected $php;
@@ -110,8 +109,6 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T
$this->setupUrls();
echo $this->getName() . " initialization done.\n";
echo $this->getName() . " site configured to run under " . $this->getHttpHost() . ":" .$this->getHttpPort() . "\n";
echo $this->getName() . " site configured to run under " . $this->getHttpHost() . ":" . $this->getHttpPort() . "\n";
}
}

View File

@@ -1,26 +1,26 @@
server {
listen PHP_SDK_PGO_SYMFONY_DEMO_HTTP_PORT;
server_name PHP_SDK_PGO_SYMFONY_DEMO_HTTP_HOST;
root PHP_SDK_PGO_SYMFONY_DEMO_DOCROOT;
index index.html index.htm index.php;
# symfony
location / {
try_files $uri /app.php$is_args$args;
}
location ~ ^/app\.php(/|$) {
fastcgi_pass PHP_SDK_PGO_PHP_FCGI_HOST:PHP_SDK_PGO_PHP_FCGI_PORT;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
#internal;
}
location ~ \.php$ {
return 404;
}
}
server {
listen PHP_SDK_PGO_SYMFONY_DEMO_HTTP_PORT;
server_name PHP_SDK_PGO_SYMFONY_DEMO_HTTP_HOST;
root PHP_SDK_PGO_SYMFONY_DEMO_DOCROOT;
index index.html index.htm index.php;
# symfony
location / {
try_files $uri /app.php$is_args$args;
}
location ~ ^/app\.php(/|$) {
fastcgi_pass PHP_SDK_PGO_PHP_FCGI_HOST:PHP_SDK_PGO_PHP_FCGI_PORT;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
#internal;
}
location ~ \.php$ {
return 404;
}
}

View File

@@ -6,12 +6,11 @@ use SDK\Build\PGO\Abstracts;
use SDK\Build\PGO\Interfaces;
use SDK\Build\PGO\Config;
use SDK\Build\PGO\PHP;
use SDK\{Config as SDKConfig, Exception, FileOps};
use SDK\Exception;
use SDK\Build\PGO\Tool;
class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\TrainingCase
{
protected $conf;
protected $base;
protected $nginx;
protected $maria;
@@ -131,8 +130,6 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T
$this->setupUrls();
echo $this->getName() . " initialization done.\n";
echo $this->getName() . " site configured to run under " . $this->getHttpHost() . ":" .$this->getHttpPort() . "\n";
echo $this->getName() . " site configured to run under " . $this->getHttpHost() . ":" . $this->getHttpPort() . "\n";
}
}

View File

@@ -4,7 +4,7 @@
###> symfony/framework-bundle ###
APP_ENV=prod
APP_DEBUG=1
APP_DEBUG=0
APP_SECRET=67d829bf61dc5f87a73fd814e2c9f629
###< symfony/framework-bundle ###

View File

@@ -1,26 +1,26 @@
server {
listen PHP_SDK_PGO_SYMFONY_DEMO_PDO_MYSQL_HTTP_PORT;
server_name PHP_SDK_PGO_SYMFONY_DEMO_PDO_MYSQL_HTTP_HOST;
root PHP_SDK_PGO_SYMFONY_DEMO_PDO_MYSQL_DOCROOT;
index index.html index.htm index.php;
# symfony
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass PHP_SDK_PGO_PHP_FCGI_HOST:PHP_SDK_PGO_PHP_FCGI_PORT;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
#internal;
}
location ~ \.php$ {
return 404;
}
}
server {
listen PHP_SDK_PGO_SYMFONY_DEMO_PDO_MYSQL_HTTP_PORT;
server_name PHP_SDK_PGO_SYMFONY_DEMO_PDO_MYSQL_HTTP_HOST;
root PHP_SDK_PGO_SYMFONY_DEMO_PDO_MYSQL_DOCROOT;
index index.html index.htm index.php;
# symfony
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass PHP_SDK_PGO_PHP_FCGI_HOST:PHP_SDK_PGO_PHP_FCGI_PORT;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
#internal;
}
location ~ \.php$ {
return 404;
}
}

View File

@@ -1,5 +1,5 @@
{
"symfony_demo_version": "v1.2.2",
"symfony_demo_version": "v1.2.5",
"type": "web",
"srv_http": "nginx",
"srv_db": "mariadb"

View File

@@ -6,12 +6,11 @@ use SDK\Build\PGO\Abstracts;
use SDK\Build\PGO\Interfaces;
use SDK\Build\PGO\Config;
use SDK\Build\PGO\PHP;
use SDK\{Config as SDKConfig, Exception, FileOps};
use SDK\Exception;
use SDK\Build\PGO\Tool;
class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\TrainingCase
{
protected $conf;
protected $base;
protected $nginx;
protected $maria;
@@ -152,8 +151,6 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T
$this->setupUrls();
echo $this->getName() . " initialization done.\n";
echo $this->getName() . " site configured to run under " . $this->getHttpHost() . ":" .$this->getHttpPort() . "\n";
echo $this->getName() . " site configured to run under " . $this->getHttpHost() . ":" . $this->getHttpPort() . "\n";
}
}

View File

@@ -1,5 +1,5 @@
{
"wp_cli_phar_url": "https://github.com/wp-cli/wp-cli/releases/download/v1.1.0/wp-cli-1.1.0.phar",
"wp_cli_phar_url": "https://github.com/wp-cli/wp-cli/releases/download/v2.0.0/wp-cli-2.0.0.phar",
"wptest_zip_url": "https://github.com/manovotny/wptest/archive/master.zip",
"type": "web",
"srv_http": "nginx",

View File

@@ -1,5 +1,5 @@
{
"pkg_url": "https://downloads.mariadb.com/MariaDB/mariadb-5.5.59/win32-packages/mariadb-5.5.59-win32.zip",
"pkg_url": "https://downloads.mariadb.com/MariaDB/mariadb-5.5.61/win32-packages/mariadb-5.5.61-win32.zip",
"host": "localhost",
"port": 3307,
"user": "root",

View File

@@ -1,5 +1,5 @@
{
"pkg_url": "http://nginx.org/download/nginx-1.13.11.zip",
"pkg_url": "http://nginx.org/download/nginx-1.15.2.zip",
"host": "127.0.0.1",
"port": 8081
}

View File

@@ -993,6 +993,8 @@ opcache.enable=1
;opcache.enable_cli=1
opcache.error_log = PHP_SDK_PGO_PHP_ERROR_LOG
opcache.log_verbosity_level = 2
opcache.file_cache=PHP_SDK_PGO_PHP_OPCACHE_FILE_CACHE
opcache.file_cache_fallback=1
;;;;;;;;;;;;;;;;;;;
; Module Settings ;

View File

@@ -993,6 +993,8 @@ opcache.enable=1
;opcache.enable_cli=1
opcache.error_log = PHP_SDK_PGO_PHP_ERROR_LOG
opcache.log_verbosity_level = 2
opcache.file_cache=PHP_SDK_PGO_PHP_OPCACHE_FILE_CACHE
opcache.file_cache_fallback=1
;;;;;;;;;;;;;;;;;;;
; Module Settings ;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@
"fcgi:env": {
"PHP_FCGI_CHILDREN": 8,
"PHP_FCGI_MAX_REQUESTS": 128
"PHP_FCGI_MAX_REQUESTS": 0
},
"scenario":