Init Repo

This commit is contained in:
root
2019-09-06 23:53:10 +08:00
commit f0ef89dfbb
7905 changed files with 914138 additions and 0 deletions

View File

@ -0,0 +1,77 @@
<?php
require_once __DIR__ . "/../../../include/bootstrap.php";
//swoole_function swoole_async_read($filename, $callback, $chunk_size = null, $offset = null) {}
//swoole_function swoole_async_write($filename, $content, $offset = null, $callback = null) {}
//swoole_function swoole_async_readfile($filename, $callback) {}
//swoole_function swoole_async_writefile($filename, $content, $callback = null) {}
// WARNING zif_swoole_async_readfile: file_size[size=1073741824|max_size=4194304] is too big. Please use swoole_async_read.
function rw_small_file() {
$file = __DIR__ . "/small_zero";
@unlink($file);
@unlink("$file.copy");
$len = 1024 * 1024 * 4; // 4M
$put_len = file_put_contents($file, str_repeat("\0", $len), FILE_APPEND);
assert($put_len === $len);
swoole_async_readfile($file, function($filename, $content) use($file) {
swoole_async_writefile("$file.copy", $content, function($write_file) use($file) {
// echo "copy small file finish\n";
// echo `ls -alh | grep zero`;
assert(filesize($write_file) === filesize($file));
unlink($write_file);
unlink($file);
echo "SUCCESS";
});
});
}
function rw_big_file() {
$file = __DIR__ . "/big_zero";
@unlink($file);
@unlink("$file.copy");
// 生成1G文件
for($i = 0; $i < 1024; $i++) {
$len = 1024 * 1024;
$put_len = file_put_contents($file, str_repeat("\0", $len), FILE_APPEND);
assert($put_len === $len);
}
// chunk = 1M copy
$i = 0;
swoole_async_read($file, function($filename, $content) use($file, &$i) {
// echo "read " . strlen($content) . " size\n";
$continue = true;
if (empty($content)) {
$continue = false;
}
$offset = $i * 1024 * 1024;
// echo "write offset $offset\n";
swoole_async_write("$file.copy", $content, $offset, function($write_file, $len) use($file, &$i, $continue) {
// echo "write $len size\n";
$i++;
if ($continue === false) {
// echo "copy finished\n";
// echo `ls -alh | grep zero`;
sleep(1);
assert(filesize($write_file) === filesize($file));
unlink($file);
unlink($write_file);
echo "SUCCESS";
}
});
return $continue;
}, 1024 * 1024);
}
rw_small_file();
rw_big_file();

View File

@ -0,0 +1,66 @@
<?php
require_once __DIR__ . "/../../../include/bootstrap.php";
//swoole_function swoole_async_read($filename, $callback, $chunk_size = null, $offset = null) {}
function read_dev_zero()
{
$context = file_get_contents("/dev/zero", null, null, null, 8192);
assert(strlen($context) === 8192);
// TODO WARNING zif_swoole_async_read: offset must be less than file_size[=0].
swoole_async_read("/dev/zero", function ($filename, $content) {
echo "file: $filename\ncontent-length: " . strlen($content) . "\nContent: $content\n";
if (empty($content)) {
echo "file is end.\n";
return false;
} else {
return true;
}
}, 8192);
}
function read_dev_null()
{
$context = file_get_contents("/dev/null", null, null, null, 8192);
assert(strlen($context) === 0);
// TODO WARNING zif_swoole_async_read: offset must be less than file_size[=0].
swoole_async_read("/dev/null", function ($filename, $content) {
echo "file: $filename\ncontent-length: " . strlen($content) . "\nContent: $content\n";
if (empty($content)) {
echo "file is end.\n";
return false;
} else {
return true;
}
}, 8192);
}
function read_normal_file()
{
$context = file_get_contents(__FILE__, null, null, null, 8192);
$len = strlen($context);
swoole_async_read(__FILE__, function ($filename, $content) use($len) {
echo "read callback\n";
// echo $len, "\n";
// echo strlen($content), "\n";
// assert($len === strlen($content));
if (empty($content)) {
echo "file is end.\n";
return false;
} else {
return true;
}
}, 8192);
}
read_dev_zero();
read_dev_null();
read_normal_file();
// todo read 大文件

View File

@ -0,0 +1,62 @@
<?php
require_once __DIR__ . "/../../../include/bootstrap.php";
//swoole_function swoole_async_readfile($filename, $callback) {}
function read_dev_zero()
{
$context = file_get_contents("/dev/zero", null, null, null, 8192);
assert(strlen($context) === 8192);
// TODO WARNING zif_swoole_async_readfile: file is empty.
swoole_async_readfile("/dev/zero", function ($filename, $content) {
echo "file: $filename\ncontent-length: " . strlen($content) . "\nContent: $content\n";
if (empty($content)) {
echo "file is end.\n";
return false;
} else {
return true;
}
});
}
function read_dev_null()
{
$context = file_get_contents("/dev/null", null, null, null, 8192);
assert(strlen($context) === 0);
// TODO WARNING zif_swoole_async_readfile: file is empty.
swoole_async_readfile("/dev/null", function ($filename, $content) {
echo "file: $filename\ncontent-length: " . strlen($content) . "\nContent: $content\n";
if (empty($content)) {
echo "file is end.\n";
return false;
} else {
return true;
}
});
}
function read_normal_file()
{
$context = file_get_contents(__FILE__, null, null, null, 8192);
$len = strlen($context);
swoole_async_readfile(__FILE__, function ($filename, $content) use($len) {
echo "read callback\n";
if (empty($content)) {
echo "file is end.\n";
return false;
} else {
return true;
}
});
}
read_dev_zero();
read_dev_null();
read_normal_file();
// todo read 大文件

View File

@ -0,0 +1,67 @@
<?php
require_once __DIR__ . "/../../../include/bootstrap.php";
//swoole_function swoole_async_write($filename, $content, $offset = null, $callback = null) {}
//callback: return true: write contine. return false: close the file.
function write_dev_zero()
{
$data = str_repeat("\0", 8192);
$len = file_put_contents("/dev/zero", $data);
assert($len === 8192);
for ($i = 0; $i < 100; $i++) {
swoole_async_write("/dev/zero", $data, -1, function ($file, $len) {
echo "write /dev/zero $len size\n";
return true;
});
}
}
function write_dev_null()
{
$data = str_repeat("\0", 8192);
$len = file_put_contents("/dev/null", $data);
assert($len === 8192);
for ($i = 0; $i < 100; $i++) {
swoole_async_write("/dev/null", $data, -1, function ($file, $len) {
echo "write /dev/null $len size\n";
return true;
});
}
}
function write_normal_file()
{
$file = __DIR__ . "/zero";
$data = str_repeat("\0", 8192);
$len = file_put_contents($file, $data);
assert($len === 8192);
unlink($file);
/** @noinspection PhpUnusedLocalVariableInspection
* @param int $dep
*/
$recursiveWrite = function($dep = 0) use($data, &$recursiveWrite, $file) {
swoole_async_write($file, $data, -1, function ($file, $len) use(&$recursiveWrite, $dep) {
if ($dep > 100) {
unlink($file);
return false;
}
echo "write $file $len size\n";
$recursiveWrite(++$dep);
return true;
});
};
$recursiveWrite();
}
write_dev_zero();
write_dev_null();
write_normal_file();

View File

@ -0,0 +1,63 @@
<?php
require_once __DIR__ . "/../../../include/bootstrap.php";
//swoole_function swoole_async_writefile($filename, $content, $callback = null) {}
function write_dev_zero()
{
$data = str_repeat("\0", 8192);
$len = file_put_contents("/dev/zero", $data);
assert($len === 8192);
for ($i = 0; $i < 100; $i++) {
swoole_async_writefile("/dev/zero", $data, function ($file, $len) {
echo "write /dev/zero $len size\n";
});
}
}
function write_dev_null()
{
$data = str_repeat("\0", 8192);
$len = file_put_contents("/dev/null", $data);
assert($len === 8192);
for ($i = 0; $i < 100; $i++) {
swoole_async_writefile("/dev/null", $data, function ($file, $len) {
echo "write /dev/null $len size\n";
});
}
}
function write_normal_file()
{
$file = __DIR__ . "/zero";
$data = str_repeat("\0", 8192);
$len = file_put_contents($file, $data);
assert($len === 8192);
unlink($file);
/** @noinspection PhpUnusedLocalVariableInspection
* @param int $dep
*/
$recursiveWrite = function($dep = 0) use($data, &$recursiveWrite, $file) {
swoole_async_writefile($file, $data, function ($file, $len) use(&$recursiveWrite, $dep) {
if ($dep > 100) {
unlink($file);
return;
}
echo "write $file $len size\n";
$recursiveWrite(++$dep);
});
};
$recursiveWrite();
}
write_dev_zero();
write_dev_null();
write_normal_file();

View File

@ -0,0 +1,19 @@
<?php
require_once __DIR__ . "/../../../include/bootstrap.php";
function block_test($n = 20000)
{
for ($i = 0; $i < $n; $i++) {
$randStr = RandStr::gen(15);
$host = "www.i_$randStr.com";
swoole_async_dns_lookup($host, function($host, $ip) use($i) {
echo "FIN i -> $ip\n";
});
}
}
block_test();