V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  sxbxjhwm  ›  全部回复第 6 页 / 共 11 页
回复总数  209
1  2  3  4  5  6  7  8  9  10 ... 11  
2022-02-23 19:42:34 +08:00
回复了 xqk111 创建的主题 宽带症候群 大家软路由上都跑了什么服务
```
root@debian:~# ps aux | grep 'clash\|php\|nginx\|maria\|AdG\|aria\|redis\|smb'
root 534 0.0 0.0 50320 6804 ? Ss 2 月 13 0:20 /usr/sbin/smbd --foreground --no-process-group
root 536 0.0 0.0 46876 2944 ? S 2 月 13 2:14 /usr/sbin/smbd --foreground --no-process-group
root 537 0.0 0.0 46892 2896 ? S 2 月 13 0:01 /usr/sbin/smbd --foreground --no-process-group
root 539 0.0 0.0 50304 3584 ? S 2 月 13 0:02 /usr/sbin/smbd --foreground --no-process-group
root 620 0.2 0.5 750796 44164 ? Ssl 2 月 09 52:39 /opt/AdGuardHome/AdGuardHome -s run
root 628 0.0 0.0 93252 4996 ? Ss 2 月 09 1:01 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
root 647 0.1 0.0 52428 7176 ? Ssl 2 月 09 40:45 /usr/local/redis/bin/redis-server 127.0.0.1:6379
root 916 0.0 0.0 2388 1392 ? S 2 月 09 0:00 /bin/sh /usr/local/mariadb/bin/mysqld_safe --datadir=/usr/local/mariadb/var --pid-file=/usr/local/mariadb/var/mariadb.pid
mariadb 1240 0.5 0.5 3020308 44852 ? Sl 2 月 09 105:20 /usr/local/mariadb/bin/mysqld --basedir=/usr/local/mariadb --datadir=/usr/local/mariadb/var --plugin-dir=/usr/local/mariadb/lib/plugin --user=mariadb --log-error=/usr/local/mariadb/var/mariadb.err --open-files-limit=65535 --pid-file=/usr/local/mariadb/var/mariadb.pid --socket=/tmp/mysql.sock --port=3306
root 1278 0.0 0.0 33388 3356 ? Ss 2 月 09 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
root 10478 0.0 0.0 6436 892 pts/2 S+ 19:39 0:00 grep clash\|php\|nginx\|maria\|AdG\|aria\|redis\|smb
www 13319 0.0 0.0 54524 4116 ? S 2 月 11 0:00 nginx: worker process
www 13320 0.0 0.0 54524 6540 ? S 2 月 11 0:00 nginx: worker process
www 13321 0.0 0.1 54524 10680 ? S 2 月 11 0:00 nginx: worker process
www 13322 0.0 0.1 54524 8324 ? S 2 月 11 0:00 nginx: worker process
www 13473 0.0 0.2 102036 17700 ? S 2 月 11 0:06 php-fpm: pool www
www 13474 0.0 0.2 101972 17932 ? S 2 月 11 0:06 php-fpm: pool www
www 13475 0.0 0.2 102036 17644 ? S 2 月 11 0:07 php-fpm: pool www
www 13476 0.0 0.2 102036 17304 ? S 2 月 11 0:06 php-fpm: pool www
www 13477 0.0 0.2 101972 18008 ? S 2 月 11 0:06 php-fpm: pool www
www 13478 0.0 0.2 101972 17852 ? S 2 月 11 0:06 php-fpm: pool www
www 13479 0.0 0.2 102036 17876 ? S 2 月 11 0:06 php-fpm: pool www
www 13480 0.0 0.2 102036 17712 ? S 2 月 11 0:06 php-fpm: pool www
www 13481 0.0 0.2 102036 18268 ? S 2 月 11 0:06 php-fpm: pool www
www 13482 0.0 0.2 102036 17856 ? S 2 月 11 0:06 php-fpm: pool www
www 13483 0.0 0.2 102032 17532 ? S 2 月 11 0:07 php-fpm: pool www
www 13484 0.0 0.2 102032 17336 ? S 2 月 11 0:07 php-fpm: pool www
www 13485 0.0 0.2 102036 17944 ? S 2 月 11 0:06 php-fpm: pool www
www 13486 0.0 0.2 102032 17912 ? S 2 月 11 0:07 php-fpm: pool www
www 13487 0.0 0.2 102032 17540 ? S 2 月 11 0:07 php-fpm: pool www
www 13488 0.0 0.2 102032 17672 ? S 2 月 11 0:07 php-fpm: pool www
www 13489 0.0 0.2 102032 17548 ? S 2 月 11 0:06 php-fpm: pool www
www 13490 0.0 0.2 102032 17572 ? S 2 月 11 0:07 php-fpm: pool www
www 13491 0.0 0.2 102032 17600 ? S 2 月 11 0:07 php-fpm: pool www
www 13492 0.0 0.2 102032 19856 ? S 2 月 11 0:07 php-fpm: pool www
www 13493 0.0 0.2 102032 17600 ? S 2 月 11 0:07 php-fpm: pool www
www 13494 0.0 0.2 102032 17648 ? S 2 月 11 0:06 php-fpm: pool www
www 13495 0.0 0.2 102032 17592 ? S 2 月 11 0:06 php-fpm: pool www
www 13496 0.0 0.2 102032 17336 ? S 2 月 11 0:06 php-fpm: pool www
www 13497 0.0 0.2 102032 17744 ? S 2 月 11 0:07 php-fpm: pool www
www 13498 0.0 0.2 102032 17368 ? S 2 月 11 0:07 php-fpm: pool www
www 13499 0.0 0.2 102032 17964 ? S 2 月 11 0:06 php-fpm: pool www
www 13500 0.0 0.2 102032 18108 ? S 2 月 11 0:07 php-fpm: pool www
www 13501 0.0 0.2 102032 18496 ? S 2 月 11 0:07 php-fpm: pool www
www 13502 0.0 0.2 102032 17888 ? S 2 月 11 0:07 php-fpm: pool www
clash 14724 11.3 0.4 4917160 39052 ? Ssl 2 月 15 1402:14 /usr/local/bin/clash -d /etc/clash/
root 14990 0.0 0.0 51320 5772 ? S 2 月 15 0:05 /usr/sbin/smbd --foreground --no-process-group
www 24186 0.0 0.2 102032 17516 ? S 2 月 12 0:07 php-fpm: pool www
www 24187 0.0 0.2 102032 17564 ? S 2 月 12 0:06 php-fpm: pool www
sxbxjhwm 28617 0.2 0.7 2141172 58228 ? S 2 月 20 10:11 /usr/sbin/smbd --foreground --no-process-group
root 31536 8.8 1.2 155024 102332 ? Ss 2 月 17 761:08 /usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf -D
root@debian:~# uname -a
Linux debian 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux
root@debian:~# df -h
文件系统 容量 已用 可用 已用% 挂载点
udev 3.9G 0 3.9G 0% /dev
tmpfs 787M 81M 707M 11% /run
/dev/sda2 218G 104G 104G 51% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda1 511M 5.2M 506M 2% /boot/efi
/dev/sdd1 11T 2.1T 8.3T 21% /mnt/sdc1
tmpfs 787M 0 787M 0% /run/user/1000
root@debian:~# free -m
total used free shared buff/cache available
Mem: 7869 822 125 20 6922 6728
Swap: 16247 294 15952
root@debian:~# cat /proc/cpuinfo | head -n10
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 55
model name : Intel(R) Celeron(R) CPU J1900 @ 1.99GHz
stepping : 9
microcode : 0x90a
cpu MHz : 1332.840
cache size : 1024 KB
physical id : 0
root@debian:~#
```

典型 all in boom 方案
2022-02-21 00:39:02 +08:00
回复了 sisuer1129 创建的主题 宽带症候群 现在上海电信还会因为用 ddns 封宽带吗?
@sisuer1129 电信有公网能拿来玩 pt ,办个 360 的天天宽带苟着吧
2022-02-03 04:31:42 +08:00
回复了 sisuer1129 创建的主题 宽带症候群 现在上海电信还会因为用 ddns 封宽带吗?
@sisuer1129 18 年用 20080 端口开过 http 服务,然后这个就送上门了。。虽然因为页面就一个无 css 的登录框,用的还是六级域名,所以没签保证书也没停机
https://i.imgur.com/7ml3aEj.jpg
https://imgur.com/ChFjF8U.jpg
@MSIAM 可能是非标端口的 TLS 通讯?
2021-07-22 13:23:16 +08:00
回复了 pigbug 创建的主题 程序员 程序员一大早遇到什么时候会开心/不开心一天?
@learningman IDC,服务器上架
2021-07-22 10:00:51 +08:00
回复了 pigbug 创建的主题 程序员 程序员一大早遇到什么时候会开心/不开心一天?
弱智老板又提了一个不切实际的需求,屁都不懂的产品经理还在那一本正经分析怎么做的时候 —— 不开心
(我司老板新需求:机房配好以后可以实现系统自动扫描网络,把全部服务器添加进系统里

老板没来催进度没提新需求,和同事一起骂老板 —— 开心
@jfdnet 美亚买的希捷中国能保么,西数已经明确不能转保了
2021-06-02 10:29:09 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
2021-05-26 11:44:49 +08:00
回复了 aptupdate 创建的主题 宽带症候群 上海地区有没有便宜的宽带推荐
http://www.189.cn/sh/support/tariff/package/114340.html 100/20,39 一个月,100 安装费算上 568 首年 468 续费,未发现需要缴纳押金,可能需要去直营营业厅(比如西区的江苏路营业厅)办理
https://emall.sh.189.cn/shop/html/30010004/100612.html 100/20,360 一年,200 安装费算上 560 首年 360 续费,押金 200,是从原 20/4 的天天宽带 http://www.189.cn/sh/support/tariff/package/109892.html 升级而来的
https://kdslife.com/t_10584935_0_5.html 宽带山这个贴也可参考
2021-05-11 08:35:50 +08:00
回复了 pytth 创建的主题 PHP PHP 查询符合条件的数组问题
2021-05-10 16:49:01 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 我的例子并没有用到多个 curl_multi_init 的实例,curl_multi_init 返回的是一个栈,你就把它当成一个队列,所有 curl_multi_exec 都在复用这个栈,如果你有需求大可以多创建几个队列,但这样显然没有意义。
2021-05-10 11:48:37 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 我其实有一点不理解,既然是同步的 fpm,为什么不等到获取数据后统一再处理呢,效率上没差的
2021-05-10 10:43:29 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 之前做过一个 cli 的爬虫,当时是用 swoole 解决的。做法就是专门起一个负责 task 的进程,用 \Swoole\Server 监听一个 sock 文件,具体文档 https://wiki.swoole.com/#/consts?id=socket-%e7%b1%bb%e5%9e%8b 。做的时候有些偷懒没有用 redis,而是直接用 \Swoole\Table 做基础的共享数据存储,sock 负责队列控制。虽然用 swoole 实现在语法上很好看,用起来却比 curl_multi_exec 要麻烦得多,后续再也没有用过这个方案,在这边讨论这个方案稍微有点超纲,算是之前踩过的坑提醒一下,附一个当时写的部分源码:

```php
protected function execute(Input $input, Output $output)
{
/**
* $initDataTable 基础配置表,用于实例化爬虫类
* |------------------------------------|
* | key | value |
* |------------------------------------|
* | service | service |
* | baseUrl | https:// |
* | cookieJar | json_encode(cookieJar) |
* |------------------------------------|
*/
$initDataTable = new \Swoole\Table(4);
$initDataTable->column('value', \Swoole\Table::TYPE_STRING, 512);
$initDataTable->create();

/**
* $acquiredListTable 记录已由 getList 方法执行过的操作
* |------------------------------|
* | key | value |
* |------------------------------|
* | getDatacenters | 0 |
* | getIpsGroupList | 0 |
* | getIpsList | 0 |
* | getSwitchList | 0 |
* | getHardwareModelList | 0 |
* | getPurchaseList | 0 |
* | getServerList | 0 |
* | getHardwareList | 0 |
* |------------------------------|
*/
$acquiredListTable = new \Swoole\Table(16);
$acquiredListTable->column('count', \Swoole\Table::TYPE_INT, 1);
$acquiredListTable->create();

$workingAtomic = new \Swoole\Atomic();
$successedAtomic = new \Swoole\Atomic();
$failedAtomic = new \Swoole\Atomic();

$serv = new \Swoole\Server(Env::get('runtime_path') . 'task.sock', 0, SWOOLE_PROCESS, SWOOLE_SOCK_UNIX_STREAM);
$serv->table = ['initData' => $initDataTable, 'acquiredList' => $acquiredListTable];
$serv->atomic = ['working' => $workingAtomic, 'successed' => $successedAtomic, 'failed' => $failedAtomic];

$serv->set(array('task_worker_num' => 15));

$serv->on('receive', function($serv, $fd, $from_id, $data) use ($output) {
$this->receive($serv, $fd, $from_id, $data, $output);
});

$serv->on('task', function ($serv, $task_id, $from_id, $data) use ($output) {
$this->task($serv, $task_id, $from_id, $data, $output);
});

$serv->on('finish', function ($serv, $task_id, $data) use ($output) {
$this->finish($serv, $task_id, $data, $output);
});

$serv->start();
}
```
2021-05-10 10:21:43 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 阿我原先还以为你做的是一个采集爬虫,没想到是 fpm 。。curl_multi_exec 这东西其实本身是异步的,只不过你需要在同步的 php 里调用只能在适当的地方写阻塞,其实不光是 curl,其他类似的队列要实现并发控制也得用阻塞的方法来控制,php 不像 node 一类的语言,可以通过触发事件来实现完全的异步,这个是最大的问题
2021-05-10 09:53:53 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 如果是我处理这样的需求,可能会选择直接用 cli 起个 daemon 进程,用 redis 负责队列,cli 自己从 redis 取任务 + 控制并发,这样通用性更强一些
2021-05-10 09:04:45 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 curl_multi_exec 输出之前都可以抽出来作为 push 方法的内容,sleep 那部分是假装你执行自己需要的功能,sleep 之后是真正的 exec
2021-05-10 02:26:47 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 https://gist.github.com/jshensh/b7f05cc2e1ebf600a1eedbf4a30bc346

我这边比较偷懒是直接在原来 Multi 类的基础上修改的,而且因为我原先的设计返回数据的 key 需要与传入的 key 对应,用了 next 直接操作数组内部指针,生怕追加任务指针会被 reset,所以就没有给 class 再加 push 方法,理论上后续再加,再次执行 exec 都是没问题的。我这边输出的结果很明显的展示了在执行 curl_multi_exec 后进行任意操作都不会影响已发出的请求,传入 callback 也可以预处理每一个返回值,至于并发控制这块,因为需要达到精准控制数量所以只能写在 while 段里所以不能很好的避免阻塞:

root@debian:~/php-curl-class# php test.php
Start: 1620584188.6943
curl_multi_exec: 1620584188.6959
sleep: 1620584191.6963
test1 received data at: 1620584193.697
test3 received data at: 1620584193.6971
test4 received data at: 1620584193.6979
test2 received data at: 1620584193.6989
test5 received data at: 1620584198.6994
test6 received data at: 1620584198.6994
test7 received data at: 1620584198.7006
test8 received data at: 1620584198.7009
array(8) {
["test1"]=>
string(40) "strlen: 259 data: float(1620584193.6961)"
["test3"]=>
string(40) "strlen: 259 data: float(1620584193.6966)"
["test4"]=>
string(40) "strlen: 259 data: float(1620584193.6969)"
["test2"]=>
string(40) "strlen: 259 data: float(1620584193.6965)"
["test5"]=>
string(40) "strlen: 259 data: float(1620584198.6985)"
["test6"]=>
string(39) "strlen: 258 data: float(1620584198.699)"
["test7"]=>
string(40) "strlen: 259 data: float(1620584198.6994)"
["test8"]=>
string(37) "strlen: 256 data: float(1620584198.7)"
}
Done: 1620584198.7015
2021-05-08 18:28:26 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 等周一吧,我发个 gist
2021-05-08 17:39:16 +08:00
回复了 sun2920989 创建的主题 PHP 一个可以在 PHP -FPM 环境来并发访问 HTTP 接口的工具类
@sun2920989 curl_multi_exec 本来就是 while 在一直调用的,它只是启动这个栈中所有的 curl 句柄而已 https://www.php.net/manual/zh/function.curl-multi-exec.php ,限制并发相关的源码在我之前贴的 GitHub 链接里其实都有,如果你实际测试一下就会发现它也能很好做到并发控制与重试的。
1  2  3  4  5  6  7  8  9  10 ... 11  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1283 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 24ms · UTC 16:53 · PVG 00:53 · LAX 09:53 · JFK 12:53
Developed with CodeLauncher
♥ Do have faith in what you're doing.