好吧,我还有一个问题,虽然我仍在努力弄清楚到底发生了什么事,我可能需要什么样的帮助,但我想我应该在这里抛出一些东西,看看是否有人以前见过这样的问题。
我的网站目前在Linux服务器上运行Wordpress 3.6,并由Rackspace托管。在最基本的层面上,我的问题是在保存/更新帖子时更新帖子的自定义字段。
我已经为给定的帖子类型(本例中为产品)配置了一些显示的自定义元框。这些自定义元框在其自己的前端贴子页面和我的网站上的其他前端页面上包含这些产品的输入和规格。我在帖子的保存操作(更新按钮)上附加了一个保存功能,以便这些元框中包含的信息都保存到许多自定义字段中。我通过以下方法完成了这一点。
插入元框:
function create_custom_products_taxonomies(){
register_post_type( \'products\',
array(
...other inputs...
\'register_meta_box_cb\' => \'products_meta_box\',
...other inputs...
)
);
}
add_action(\'init\', \'create_custom_products_taxonomies\');
function products_meta_box() {
add_meta_box(\'custom_product_info\', __(\'Top 10 Product Listings\'), \'add_custom_page_product_info\', \'products\', \'normal\', \'high\');
}
功能定义:
function add_custom_page_product_info() {
...code to populate meta box...
}
保存定义:
function save_acpi_data() {
...code to save information in meta box...
}
add_action(\'save_post\', \'save_acpi_data\');
我添加这些主要是为了展示我是如何做事的。
我设置代码的方式是,save函数检查自定义元框中的数据,然后将信息保存到适当命名的自定义字段中。我还设置了保存功能,以便在保存/更新后进行清理,并删除所有存在的自定义字段,这些字段在保存/更新后没有关联的元框信息。
只有当有多个人登录到我的网站的管理端并正在更新/保存这些页面时,我的问题才会出现。(我们在网站上有大约700种产品,需要多人来适当更新网站。)出现这种情况时,我的自定义元框(自定义字段?)中的数据不知何故被删除了,因此从我的网站上消失了。
目前,我的工作原理是,通过管理端页面加载和/或后期保存的Wordpress传递的数据会以某种方式被截断。我是基于这样一个事实,当我们有大约6-7个人登录到站点的管理端并处理它时,我们当前站点上托管的四核服务器会在短暂但重复的一段时间内将CPU保持在100%。此外,我注意到,在我的apache错误日志中,以及在多人更新站点和数据消失时,会出现如下错误:
Script timed out before returning headers: async-upload.php, referer: wp-admin/post.php?post=75064&action=edit&message=1
Script timed out before returning headers: async-upload.php, referer: wp-admin/post.php?post=75262&action=edit&message=10
Script timed out before returning headers: async-upload.php, referer: wp-admin/post.php?post=75269&action=edit&message=6
重复多次。
数据丢失的问题在上周之前还不明显,但在上周之前,在给定的时间只有2-3人在该网站上工作。当我是唯一登录到管理端的人时,我也无法在第二台开发服务器(相同的服务器设置、Wordpress版本和主题代码)上复制这个问题到甚至是最轻微的程度。在发现几乎每个产品页面上都存在一些持久性错误,并希望在合理的时间内修复所有错误之后,我们对网站进行了最新的更改。
我只想忽略这个问题,并说一旦这些问题得到解决,它就会结束并消失,但我知道它会在以后再次出现,此外,它现在对当前站点造成的问题非常有影响。我们有一个站点的备份,负责保持备份的团队只需将丢失的数据从备份中复制到当前站点即可。一遍又一遍。。。你明白了。
现在,我正试图通过检查自定义元框中的信息量是否与save函数保存(并清理)所有相关自定义字段时的信息量一致来缓解这个问题。(保存后检查数据)
我还没有找到一种方法来检查数据是否在管理端页面加载时被截断,然后在保存帖子时被删除。在这种情况下,页面上的自定义字段在页面加载后将显示为空,即使数据仍然存在于数据库中并且“应该”显示。(检查post管理页面加载上的数据)
通过将WP\\u DEBUG设置为true,在调试栏插件处于活动状态的情况下运行站点的前端和后端,以及通过清除apache错误日志(除上述错误外),我已经清除了整个站点中的php错误。
我认为这足以描述我所看到的问题。我想我对社区的问题是:
还有谁见过这种行为吗?(由于缺少“保存”功能的“清理”部分,此问题将以元框中的信息呈现,而在保存帖子时,元框中的信息不会保存/更新到相应的自定义字段。)
还有什么我应该看的吗?
我唯一的另一个选择是关闭保存功能的“清理”部分,让其他人手动删除与他们要删除的信息相关的所有自定义字段,这对他们来说很乏味,但可以防止网站删除我们不想删除的随机信息。如果我不能很快找到这个问题的解决方案,我可能不得不求助于这个不受欢迎的选择。
不过我宁愿解决这个问题。我想这就是我作为一名工程师所得到的