Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将30000篇帖子上传到Wordpress中而不会导致XML-RPC崩溃_Php_Python_Wordpress_Xml Rpc - Fatal编程技术网

Php 将30000篇帖子上传到Wordpress中而不会导致XML-RPC崩溃

Php 将30000篇帖子上传到Wordpress中而不会导致XML-RPC崩溃,php,python,wordpress,xml-rpc,Php,Python,Wordpress,Xml Rpc,我在Wordpress上有大约30000篇很短的帖子要发表。我使用SQLlite数据库和python脚本构建它们,并通过python中的wordpress_xmlrpc库上传它们。但是我的网站在发布了100-200篇帖子后就崩溃了,因为服务器认为这是DoS攻击 我的服务器是一个我有SSH访问权的linux设备。我正在寻找一种更直接地将帖子上传到Wordpress的方法,比如直接与数据库交互,或者直接在服务器上使用本地进程。有人能提供一些想法吗?我也尝试过通过Python脚本直接与数据库交互,这对

我在Wordpress上有大约30000篇很短的帖子要发表。我使用SQLlite数据库和python脚本构建它们,并通过python中的wordpress_xmlrpc库上传它们。但是我的网站在发布了100-200篇帖子后就崩溃了,因为服务器认为这是DoS攻击


我的服务器是一个我有SSH访问权的linux设备。我正在寻找一种更直接地将帖子上传到Wordpress的方法,比如直接与数据库交互,或者直接在服务器上使用本地进程。有人能提供一些想法吗?

我也尝试过通过Python脚本直接与数据库交互,这对我来说很有吸引力。我使用的是MySQL数据库

为此,您需要ssh连接到Wordpress站点和数据库所在的服务器。然后在那里运行以下脚本:

运行此脚本的附加条件:

a。所有的帖子都应该在同一个文件夹中的不同文件中 目录

b。每个文件的第一行应该包含文章标题和文章内容 在其余的队伍中

#/usr/bin/env python
导入MySQLdb
导入fnmatch
导入操作系统
#列表以包含所有post文件
我的匹配=[]
#收集上面列表中的帖子文件
对于os.listdir(“”)中的文件:
如果fnmatch.fnmatch(文件'.*'):
打印(文件)
持续
my_match.append(文件)
打印我的匹配
#建立数据库连接
conn=MySQLdb.connect(host=“localhost”,user=,passwd=,db=)
x=连接光标()
打印x
对于我的比赛中的fl:
新建文件=“/”+fl
打开(新的_文件)作为f:
heading=f.readline().strip()
content=f.read()
打印标题
url=标题。替换(“,“-”)
打印url
#尝试db查询,根据数据库和表进行更改
尝试:
x、 执行(““插入wp_帖子(帖子作者、帖子日期、帖子内容、帖子标题、帖子名称)”值(3,“2017-03-28 20:24:12”、%s、%s)”、(内容、标题、url))
康涅狄格州提交
打印“完成:)”
除:
控制点回滚()
打印“Oops,未完成:(”
康涅狄格州关闭

我也尝试过通过Python脚本直接与数据库交互,这对我来说很有吸引力。我使用的是MySQL数据库

为此,您需要ssh连接到Wordpress站点和数据库所在的服务器。并在那里运行以下脚本:

运行此脚本的附加条件:

a、 所有的帖子都应该在同一个文件夹中的不同文件中 目录

b、 每个文件的第一行应该包含文章标题和文章内容 在其余的队伍中

!/usr/bin/env python
导入MySQLdb
导入fnmatch
导入操作系统
#列表以包含所有post文件
我的匹配=[]
#收集上面列表中的帖子文件
对于os.listdir(“”)中的文件:
如果fnmatch.fnmatch(文件'.*'):
打印(文件)
持续
my_match.append(文件)
打印我的匹配
#建立数据库连接
conn=MySQLdb.connect(host=“localhost”,user=,passwd=,db=)
x=连接光标()
打印x
对于我的比赛中的fl:
新建文件=“/”+fl
打开(新的_文件)作为f:
heading=f.readline().strip()
content=f.read()
打印标题
url=标题。替换(“,“-”)
打印url
#尝试db查询,根据数据库和表进行更改
尝试:
x、 执行(““插入wp_帖子(帖子作者、帖子日期、帖子内容、帖子标题、帖子名称)”值(3,“2017-03-28 20:24:12”、%s、%s)”、(内容、标题、url))
康涅狄格州提交
打印“完成:)”
除:
控制点回滚()
打印“Oops,未完成:(”
康涅狄格州关闭

找到了另一种方法,以防其他人无意中发现。将所有帖子转储到csv文件并使用“csv to post”小部件。我使用的是免费的终极csv导入器。非常简单。

找到了另一种方法,以防其他人无意中发现。将所有帖子转储到csv文件并使用“csv to post”widget。我使用的是免费的终极CSV导入器。非常简单。

你有没有尝试过用你想添加的帖子直接还原SQL数据库?你有没有尝试过用你想添加的帖子直接还原SQL数据库?我会立即尝试,如果成功的话会回复你。谢谢!!Rohini,我很好奇…还有很多其他领域用于POST的sql数据库中的ds…是否使用“重建数据库”你的Wordpress控制面板的功能来更新所有这些吗?没有AstroBen,wp_posts表的所有其他字段都可以为空或设置默认值。这就是为什么我没有为它们设置任何值,而且它们也不是我所用的。我会立即尝试,如果可行的话会回复你。谢谢!!Rohini,我很好奇…有sql数据库中的许多其他字段用于帖子…您是否使用Wordpress控制面板中的“重建数据库”功能来更新所有这些?不,AstroBen,
wp_posts
表中的所有其他字段都可以为空或设置默认值。这就是为什么我没有为它们设置任何值,而且它们也不是我所用的。
#!/usr/bin/env python
import MySQLdb
import fnmatch
import os

#List to contain all the post files
my_match = []

#Gather post files in above list
for file in os.listdir("<path of the directory where post files remains>"):
    if fnmatch.fnmatch(file, '.*'):
        print(file)
        continue
    my_match.append(file)

print my_match

#Make database connection
conn = MySQLdb.connect(host= "localhost", user="<username>", passwd="<password>", db="<database name>")

x = conn.cursor()
print x

for fl in my_match:
     new_file = "<path to the directory where post files remains>/" + fl
with open(new_file) as f:
    heading = f.readline().strip()
    content = f.read()


print heading
url = heading.replace(" ", "-")

print url

#try db query, change according to your database and tables
try:
    x.execute("""INSERT INTO wp_posts (post_author, post_date, post_content, post_title, post_name) VALUES (3, "2017-03-28 20:24:12", %s, %s, %s)""",(content, heading, url))
    conn.commit()
    print "Done! :)"
except:
    conn.rollback()
    print "Oops, not done :("

conn.close()