小编dez*_*dez的帖子

致命错误:超出最长执行时间300秒

我一直收到这个PHP错误:

致命错误:超出最长执行时间300秒

我已经尝试在php.ini(apache和cli)中设置我max_execution_time和我的max_input_time设置0,-1以及4000每个设置秒.

我仍然得到错误说:

致命错误:超出最长执行时间300秒

在我收到此消息之前,我的脚本运行超过300秒

我通过命令行运行脚本.

我也检查了我phpinfo(),看看php.ini我正在使用哪个.

更有趣的是我尝试将设置 max_execution_timemax_input_time设置设置为5秒,我的脚本将在5秒内运行,然后才得到:

致命错误:超出最长执行时间300秒

php command-line-interface

75
推荐指数
8
解决办法
19万
查看次数

何时使用MongoDB

我正在编写一个不一定需要扩展能力的应用程序,因为它不会在开始时收集大量数据.(但是,如果我很幸运,我可能会在路上行驶.)

我将在同一个盒子上运行我的Web服务器和数据库(现在).

话虽如此,我正在寻找性能和效率.

我的应用程序的主要部分将是加载博客文章.使用RDBMS(MySQL)我将进行6次查询(其中2个查询是连接),只是为了加载一个博客文章页面.

select blog
select blog_album
select blog_tags
select blog_notes
select blog_comments (join with users)
select blog_author_participants (join with users)
Run Code Online (Sandbox Code Playgroud)

但是,使用MongoDB,我可以对6个表进行反规范化并将其展平为仅2个表/集合,并将我的查询最小化为可能只有一个查询,

users
blogs
    ->blog_album
    ->blog_tags        
    ->blog_notes
    ->blog_comments
    ->blog_author_participants
Run Code Online (Sandbox Code Playgroud)

现在,使用MongoDB架构,将会有一些数据冗余.但是,硬盘空间比CPU /服务器便宜.

1.)这是一个使用MongoDB的好方案吗?

2.)在扩展到单个服务器之外时,您是否只在使用MongoDB时获益?

3.)使用MongoDB是否存在任何持久性风险?我听说在执行插入时可能会丢失数据 - 因为insert首先写入内存,然后写入数据库.

4.)这是否会阻止我在生产中使用MongoDB?

mysql database database-design relational-database mongodb

47
推荐指数
5
解决办法
4万
查看次数

mongodb:我应该总是在更新时使用'safe'选项

在处理mongodb时,我应该何时在查询中使用{safe:true}?

现在我使用'safe'选项来检查我的查询是否已成功插入或更新.但是,我觉得这可能是过度杀戮.

我应该假设99%的时间,我的查询(假设它们写得正确)将被插入/更新,而不必担心检查它们是否成功输入?

想法?

database mongodb

10
推荐指数
2
解决办法
9932
查看次数

如何在Makefile中导出环境变量

我正在尝试导出环境变量,以便可以在父 shell MakeFile 中访问它们:

export-vars:
    # extract vars from text file - remove comments - export output
    export $$(cat env.txt | grep -v ^# | xargs) 
Run Code Online (Sandbox Code Playgroud)

然后当我跑步时:

$ make export-vars
$ echo $SOME_VAR_EXPORTED_FROM_MAKEFILE
Run Code Online (Sandbox Code Playgroud)

我期望文本中的变量被设置为环境变量。

如何在目标/规则内执行此操作有任何帮助吗?

makefile environment-variables

3
推荐指数
1
解决办法
1万
查看次数

避免 MySQL '尝试获取锁时发现死锁;尝试重新启动事务'

我有时会收到 mysql 死锁错误说:

'尝试获取锁时发现死锁;尝试重新启动事务'

我有一个队列表,其中多个 php 进程同时运行,从表中选择行。但是,对于每个进程,我希望它每次提取都抓取一组唯一的行,因此我没有选择任何重叠的行。

所以我运行这个查询:(这是我得到死锁错误的查询)

    $this->db->query("START TRANSACTION;");

    $sql = "   SELECT   mailer_queue_id
                FROM    mailer_queues
                WHERE   process_id IS NULL
                LIMIT   250 
                FOR UPDATE;";
    ...


    $sql = "UPDATE  mailer_queues
            SET     process_id = 33044,
                    status = 'COMPLETED'
            WHERE   mailer_queue_id 
                IN  (1,2,3...);";

    ...

    if($this->db->affected_rows() > 0) {
        $this->db->query("COMMIT;");       
    } else{
        $this->db->query("ROLLBACK;");      
    }
Run Code Online (Sandbox Code Playgroud)

我也是:

同时向表中插入行(没有事务/锁)

同时更新表中的行(没有事务/锁)

同时从表中删除行(没有事务/锁)

同样,我的更新和删除只更新和删除它们分配有 process_id 的行......以及我执行“SELECT rows ... FOR UPDATE”事务的地方 process_id = null。理论上,它们永远不应该重叠。

我想知道是否有适当的方法来避免这些死锁?

是否会发生死锁,因为一个事务在选择/更新时锁定表的时间过长,而另一个进程正在尝试执行相同的事务并且只是超时?

任何帮助深表感谢

php mysql deadlock database-deadlocks

1
推荐指数
1
解决办法
9425
查看次数