V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  abccccabc  ›  全部回复第 11 页 / 共 39 页
回复总数  773
1 ... 7  8  9  10  11  12  13  14  15  16 ... 39  
有个问题我觉得挺奇怪的,为啥有些高手盯着变量 i 呢?
我原有代码(doReplace 函数里的代码写在 for 循环内)和 39L 的基本一模一样。他只是提取$.post 到 doReplace 函数里,就成功了。神奇之术。难道是因为变量的作用域问题吗?
我的天呐,高手们这么热情。

写了两遍实现。太浪费时间了。

@ming159 39L 这个太简单了,早点看到这个就好了。一直在想着因为异步导致的问题,结果把大家都带偏了。

已经实现了,谢谢各位
@cheese 谢谢。

代码正在改造中
@qrobot 你说对了。估计你早有解决方案了
@webszy 1 、Promise.all 获取所以返回结果再修改,2 、使用 async/await 转为同步处理

我去看看 Promise.all ,同步会卡浏览器,现在就是用的这种方法,图片少了还好,图片一多。这个浏览器什么也干不了。
@nitmali 使用场景是这样的。

oldcontent="我是文章内容,里面有多个远程图片,如<img src='https://www.baidu.com/s/abc.jpg'> <img src='https://www.csdn.com/s/123.jpg'> <img src='https://www.jd.com/s/mn.jpg'>,甚至有些文章内容的图片会更多,现在的需求就是将这些文章内容中的图片进行本地化。替换掉文章内容远程图片,最后入库”。


var allimg = ['https://www.baidu.com/s/abc.jpg', 'https://www.csdn.com/s/123.jpg', 'https://www.jd.com/s/mn.jpg'];


$.post 是异步,如何在循环的异步中替换掉 oldcontent 呢?

@zzxqd var oldcontent = allimg.map(item => {return item.url}) ,这一句什么意思呢?


各位,我 JS 水平不高,就会用一个 jquery 。
@zzzyyysss 我试过了,多个异步去修改 oldcontent 替换旧图片地址,只有 for 循环最后 i 变量替换操作生效。 现在我明白,是要对 oldcontent 加锁,这应该就是竞争。太深澳了,又搞不定。唉。


看来现在得请教 JS 高手了。
@putyy 用不起云存储,个人小论坛,用来记录我的学习而已。

@cybort 确实是并发超过一定数量后,部分主机会限制。直接返回类似 403 这种
@zzzyyysss

你说的是这样的吗?
```
var allimg = 获取到的图片数组;
var oldcontent = 原内容;
for(var i=0; i<allimg.length; i++){
$.post('url', 参数, function(ret) {
if(ret['code'] == 200) {
oldcontent = oldcontent.replace(ret['oldimgurl'], ret['newimgurl']);
}else{
console.log(错误信息);
}
}, 'json');
}
```

这样有一个很大的问题:多个异步去修改同一全局变量,必须要锁定全局变量 oldcontent ,然后用队列的形式去替换 oldcontent 内容,不然最后只会有一个修改 oldcontent 生效。

这样更麻烦,搞不定。

-------------------
php 用了并发,现在问题也不小,
```
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>AccessDenied</Code>
<Message>You are denied by bucket referer policy.</Message>
<RequestId>65F44FE6D4BE2035341DF46B</RequestId>
<HostId>40114.oss-cn-beijing.aliyuncs.com</HostId>
<BucketName>blog-picture-240114</BucketName>
<EC>0003-00000503</EC>
<RecommendDoc>https://api.aliyun.com/troubleshoot?q=0003-00000503</RecommendDoc>
</Error>
```
这节奏似乎只能放弃 PHP 并发了。
@erquiasz0825 guzzle 简单好用,默认也是用 curl_multi_exec ,不是多线程也不是多进程,而是用非阻塞 I/O 的原理。

楼上有人建议过,我看了下,他的版本让人真的好纠结:用 v6 版本 php 版本为 >=5.5 and <8.0 ,用 v7 版本, php >= 7.2.5 。

现在在看 Yurunsoft/YurunHttp
沃得天呐,你们到底知道多少这种 PHP 工具包呀?

看来是我见识少呀,向各路并发/异步 PHP 高手学习学习。展示一下你写的 并发/async php 代码???让我开开眼界呗。
@k9982874 没玩过爬虫,我是手工复制文章到论坛。有时候因为文章的图片太多,导致图片本地化失败。到目前为止,还没有自动采集过别人的文章入数据库的事情。

白嫖???工具包我只能白嫖呀,像这样的工具包 Yurunsoft/YurunHttp 我写不出来的,只能用别人写好的工具包。
@a282810 要求 php7.1 以上的 https://github.com/Yurunsoft/YurunHttp

这个工具包可以研究研究,它的低版本可以考虑。谢谢
@k9982874 不是做爬虫,是复制 web 文章到我的论坛,同时要将图片进行本地化。而且还要替换掉内容中的外部图片地址。

@a282810 https://github.com/ares333/php-curl 这个项目里感觉更像异步,并发的话,肯定还要处理后续事情。他的项目示例里没有体现出来。


我是复制一些网络上优秀的文章到 dz 论坛,同时需要替换掉文章内容对应的 bbcode 图片代码。异步真不知道怎么操作,并发的话,我知道后续会有一个结果,对这个结果 foreach 就可以得到下载后图片。方便处理后续替换入库等操作。
```
@a282810
以前爬东西用过 https://github.com/ares333/php-curl
```
简单看了一下使用示例,并没有看到并发的相关操作。而且此包很久都没有更新了。处于无维护状态。
237 天前
回复了 yagamisam 创建的主题 PHP apache+ PHP 后端,超时问题
Àfter few days struggling find out, now it clearly my memcached touch function took the extra time. It hurt when xdebug never capture the delay and now im working to fix.it.. Anyway thank for all of you willing to help.

人家不是回复了吗?我英文不好,猜测是 memcached 的问题。
237 天前
回复了 R1der 创建的主题 PHP PHP 求助
楼主:
非 windows:用宝塔或者 1Panel ,用鼠标点几下就成功了。很简单。
windows:用 phpStudy 或者 phpts 都可以。但要自己复制 php.ini-production 为 php.ini ,然后找 extension=curl 去掉前面的;号,其它如法炮制。
https://v2ex.com/t/927189#reply12


楼主,你看下这贴,有你要的答案。
这笔记本质量不行哦,我 2016 年买的华硕本本,现在还在服役。

可以去卖笔记本的地方看看:假如你买他们的新笔记本,但必须要将旧笔记本的资料导到新笔记本上。然后将旧笔记本卖掉。
241 天前
回复了 chevalier 创建的主题 北京 房东不退租房押金,准备起诉
无意中发现一个 jilu001.com 的网站,都是不退还租户租金的信息。还有租房老司机公众号(应该是这个名称)也会记录黑房东的。你可以把信息发到上面网站或者公众号上。前提条件是先退你钱了,再上报信息。
1 ... 7  8  9  10  11  12  13  14  15  16 ... 39  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1028 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 19:16 · PVG 03:16 · LAX 11:16 · JFK 14:16
Developed with CodeLauncher
♥ Do have faith in what you're doing.