gpt4 book ai didi

php - 从 php 执行 MSSQL 存储过程

转载 作者:行者123 更新时间:2023-12-04 14:41:43 24 4
gpt4 key购买 nike

我正在尝试从 php 调用 MS SQL 存储过程。

我已经在 Management Studio 中使用硬编码参数自行测试了存储过程,并且能够让它以预期的结果执行。

但是,当尝试从 php 调用它时,我得到了这些错误。

警告:mssql_execute() [function.mssql-execute]:第 145 行 C:\xampp\htdocs\index.php 中的存储过程执行失败

fatal error :第 146 行 C:\xampp\htdocs\index.php 中超过 60 秒的最大执行时间

在我发布的代码中,第 145 行是 mssql_execute 命令。

如有任何帮助,我们将不胜感激。

    $userQuery = "select top 1 id from bravo_biometric_batch order by id desc";
$result = mssql_query($userQuery,$DB);
$bravo_biometric_batch_id = mssql_result($result,0,0);

$company_year_id = 237;
$date = date("Ymd");
$server_file_name = "e:\\bravo_csv\\".$filename;

$csv_proc_name = mssql_init('bulk_insert_bravo_csv',$DB);
mssql_bind($csv_proc_name, '@data_csv_file',$server_file_name,SQLVARCHAR, false,false,200);
mssql_bind($csv_proc_name, '@bravo_biometric_batch_id',$bravo_biometric_batch_id, SQLINT2, false,false, 10);
mssql_bind($csv_proc_name, '@company_year_id',$company_year_id, SQLINT2, false,false,10);
mssql_bind($csv_proc_name, '@upload_date',$date, SQLVARCHAR, false,false,20);

mssql_execute($csv_proc_name);

最佳答案

错误是说您的存储过程运行时间超过 60 秒。默认情况下,PHP 在 60 秒时超时(这是在 php.ini 中使用 mysql.connect_timeout 以秒为单位设置的)

您应该尝试在 SQL 查询分析器中使用与超时相同的值手动运行该过程,看看需要多长时间。例如,如果服务器上的文件为 c:\temp\csvfile.csv,批处理 ID 为 1234,公司年份为 2011 年,日期为当前时间,您将使用:

print 'Start time: ' + getdate()
exec 'bulk_insert_bravo_csv' 'c:\\temp\\csvfile.csv', 1234, 2011, getdate()
print 'End time: ' + getdate()

请注意,在查询分析器中运行 SQL 时,任何\字符都必须转义为\。

这将运行相同的命令,并打印前后的时间。然后你可以看到它需要多长时间。如果您不确定要使用的值,请让您的 PHP 页面在 mysql_execute() 命令之前将它们打印出来,然后将它们插入查询分析器。

当您知道需要多长时间后,您可以将程序的超时调整为超过 60 秒。另一种方法是优化您的存储过程(如果可能),或者如果可以的话运行较小的 CSV 批处理。请注意,在增加 60 秒查询超时后,您可能会遇到其他超时。例如,PHP 本身将在 PHP.ini 中的 max_execution_time 中设置超时。 Apache 的默认超时时间也为 300(5 分钟)。因此,当您增加一个超时时,您可能会遇到另一个超时并且也必须增加超时。

另一种解决此问题的方法是在命令行模式下从 shell 脚本或批处理文件或其他文件运行 PHP。这会让您绕过大部分超时(至少是 Apache、PHP)。

关于php - 从 php 执行 MSSQL 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7794085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com